| | |
| | | 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"); |
| | | }}; |
| | |
| | | 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]不能为空"); |
| | | } |
| | |
| | | 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); |
| | |
| | | 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]不能为空"); |
| | |
| | | @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); |
| | | } |
| | |
| | | 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(); |
| | | } |
| | | |
| | | } |
| | |
| | | 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) { |
New file |
| | |
| | | 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]; |
| | | } |
| | | } |
| | |
| | | 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]; |
| | | } |
| | | } |
| | |
| | | @Data |
| | | public class TaskArmWorkspaceStatusParam { |
| | | //单据编号 |
| | | private int arm_no; |
| | | private String id; |
| | | //数量 |
| | | private String type;//from|to,用于告知当前工作空间是抓取位还是放置位 |
| | |
| | | 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); |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | |
| | | public interface BasArmMastService extends IService<BasArmMast> { |
| | | boolean updateArmMastStatus(int armNo,int sortingLine,int status,int endStatus); |
| | | |
| | | } |
| | |
| | | void taskArmReport(TaskArmReportParam param); |
| | | void taskArmCycleResult(TaskArmCycleResultParam param); |
| | | void taskArmWorkspaceStatus(TaskArmWorkspaceStatusParam param); |
| | | void taskArmWorkOrderStatus(OrderArmEndParam param); |
| | | } |
| | |
| | | |
| | | @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); |
| | | } |
| | | } |
| | |
| | | @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; |
| | |
| | | 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)){ |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | |
| | | //获取未下发单据 |
| | | List<String> orderNos = orderService.AllStatusSatisfyOrder(0); |
| | | if(orderNos == null || orderNos.isEmpty()) { |
| | | log.info("未有新订单"); |
| | | // log.info("未有新订单"); |
| | | return; |
| | | } |
| | | //遍历单据 |
| | |
| | | |
| | | </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> |