Browse Source

add:增加订单表和物料组盘绑定表对应类

update:更新冲压下料任务代码
master^2
songxiaopeng 10 months ago
parent
commit
e379c41cf9
  1. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java
  2. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java
  3. 11
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingReq.java
  4. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingStock.java
  5. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java
  6. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java
  7. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java
  8. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java
  9. 22
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java
  10. 62
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/controller/OrderProcessController.java
  11. 43
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/IOrderProcessService.java
  12. 58
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/OrderProcess.java
  13. 12
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.java
  14. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.xml
  15. 46
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessDto.java
  16. 12
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessQuery.java
  17. 80
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/impl/OrderProcessServiceImpl.java
  18. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java
  19. 38
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java
  20. 104
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java
  21. 263
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJJKTask.java
  22. 9
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java
  23. 1
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java
  24. 125
      lms/nladmin-ui/src/views/wms/sch/materialBind/index.vue
  25. 27
      lms/nladmin-ui/src/views/wms/sch/materialBind/materialVehicleBind.js
  26. 4
      lms/nladmin-ui/src/views/wms/sch/point/index.vue
  27. 130
      lms/nladmin-ui/src/views/wms/sch/process/index.vue
  28. 27
      lms/nladmin-ui/src/views/wms/sch/process/orderProcess.js

8
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java

@ -10,6 +10,7 @@ import org.nl.wms.ext.service.AcsToWmsService;
import org.nl.wms.ext.service.IotToWmsService;
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -52,4 +53,11 @@ public class IotToWmsController {
return new ResponseEntity<>(iotToWmsService.orders(iotOrdersReq), HttpStatus.OK);
}
@PostMapping("/fjMaterialInfo")
@Log("sorting系统查询库存")
@ApiOperation("sorting系统查询库存")
public ResponseEntity<Object> fjMaterialInfo(@RequestBody SortingReq sortingReq) {
return new ResponseEntity<>(iotToWmsService.fjMaterialInfo(sortingReq), HttpStatus.OK);
}
}

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java

@ -4,6 +4,10 @@ import com.alibaba.fastjson.JSONObject;
import org.nl.wms.ext.service.dto.to.BaseResponse;
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
import java.util.List;
/**
* @Author: sxp
@ -17,4 +21,5 @@ public interface IotToWmsService {
BaseResponse orders(IotOrdersReq iotOrdersReq);
List<MaterialVehicleBind> fjMaterialInfo(SortingReq sortingReq);
}

11
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingReq.java

@ -0,0 +1,11 @@
package org.nl.wms.ext.service.dto.to.iot;
import lombok.Data;
/**
* @author Administrator
*/
@Data
public class SortingReq {
private String order;
}

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingStock.java

@ -0,0 +1,14 @@
package org.nl.wms.ext.service.dto.to.iot;
import lombok.Data;
/**
* @author Administrator
*/
@Data
public class SortingStock {
private String vehicleCode;
private String materialCode;
private String materialName;
private String orderCode;
}

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java

@ -7,10 +7,15 @@ import org.nl.wms.ext.service.IotToWmsService;
import org.nl.wms.ext.service.dto.to.BaseResponse;
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author sxp
*/
@ -21,6 +26,9 @@ public class IotToWmsServiceImpl implements IotToWmsService {
@Autowired
private AcsToWmsService acsToWmsService;
@Autowired
private IMaterialVehicleBindService materialVehicleBindService;
@Override
public BaseResponse acsApply(JSONObject param) {
return acsToWmsService.acsApply(param);
@ -38,4 +46,10 @@ public class IotToWmsServiceImpl implements IotToWmsService {
return null;
}
@Override
public List<MaterialVehicleBind> fjMaterialInfo(SortingReq sortingReq) {
String order = sortingReq.getOrder();
return materialVehicleBindService.selectByOrder(order);
}
}

8
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java

@ -71,6 +71,13 @@ public class PdaController {
// return new ResponseEntity<>(pdaService.zpjb(param), HttpStatus.OK);
// }
@PostMapping("/cyjk")
@Log("冲压下料位叫空")
@ApiOperation("冲压下料位叫空")
public ResponseEntity<Object> cyjk(@RequestBody JSONObject param){
return new ResponseEntity<>(pdaService.cyjk(param), HttpStatus.OK);
}
@PostMapping("/dzwck")
@Log("待折弯件出库")
@ApiOperation("待折弯件出库")
@ -119,4 +126,5 @@ public class PdaController {
public ResponseEntity<Object> getVehicleType(){
return new ResponseEntity<>(pdaService.getVehicleType(), HttpStatus.OK);
}
//todo 指令查询 指令取消、指令完成、任务完成、取消、人工组盘、解绑
}

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java

@ -22,6 +22,8 @@ public interface PdaService {
PdaResponseVo zpjb(JSONObject param);
PdaResponseVo cyjk(JSONObject param);
PdaResponseVo dzwck(JSONObject param);
PdaResponseVo zwjk(JSONObject param);

8
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java

@ -138,6 +138,14 @@ public class PdaServiceImpl implements PdaService {
return PdaResponseVo.pdaResultOk("组盘解绑成功");
}
@Override
public PdaResponseVo cyjk(JSONObject param) {
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
param.put("taskType", "CYJKTask");
acsToWmsService.acsApply(param);
return PdaResponseVo.pdaResultOk("待折弯件出库成功");
}
@Override
public PdaResponseVo dzwck(JSONObject param) {
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());

22
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java

@ -143,17 +143,17 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
// 获取region_name
SchBaseRegion baseRegion = regionMapper.selectById(entity.getRegion_code());
entity.setRegion_name(baseRegion.getRegion_name());
// if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
// String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
// entity.setCan_vehicle_type(can_vehicle_type);
// }
// String pointStatus = entity.getPoint_status();
// // 根据点位状态来判断更新内容
// if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
// entity.setVehicle_type("");
// entity.setVehicle_code("");
// entity.setVehicle_qty(0);
// }
if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
entity.setCan_vehicle_type(can_vehicle_type);
}
String pointStatus = entity.getPoint_status();
// 根据点位状态来判断更新内容
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
entity.setVehicle_type("");
entity.setVehicle_code("");
entity.setVehicle_qty(0);
}
pointMapper.updateById(entity);
}

62
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/controller/OrderProcessController.java

@ -0,0 +1,62 @@
package org.nl.wms.sch.process.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.base.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.sch.process.service.IOrderProcessService;
import org.nl.wms.sch.process.service.dao.OrderProcess;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
import java.util.Set;
/**
* @author order_process
* @date 2024-05-09
**/
@Slf4j
@RestController
@Api(tags = "订单工艺信息管理")
@RequestMapping("/api/orderProcess")
public class OrderProcessController {
@Autowired
private IOrderProcessService orderProcessService;
@GetMapping
@Log("查询订单工艺信息")
@ApiOperation("查询订单工艺信息")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page){
return new ResponseEntity<>(TableDataInfo.build(orderProcessService.queryAll(whereJson,page)),HttpStatus.OK);
}
@PostMapping
@Log("新增订单工艺信息")
@ApiOperation("新增订单工艺信息")
public ResponseEntity<Object> create(@Validated @RequestBody OrderProcess entity){
orderProcessService.create(entity);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
@Log("修改订单工艺信息")
@ApiOperation("修改订单工艺信息")
public ResponseEntity<Object> update(@Validated @RequestBody OrderProcess entity){
orderProcessService.update(entity);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@Log("删除订单工艺信息")
@ApiOperation("删除订单工艺信息")
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
orderProcessService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

43
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/IOrderProcessService.java

@ -0,0 +1,43 @@
package org.nl.wms.sch.process.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.sch.process.service.dao.OrderProcess;
import java.util.Map;
import java.util.Set;
/**
* @description 服务接口
* @author order_process
* @date 2024-05-09
**/
public interface IOrderProcessService extends IService<OrderProcess> {
/**
* 查询数据分页
* @param whereJson 条件
* @param pageable 分页参数
* @return IPage<OrderProcess>
*/
IPage<OrderProcess> queryAll(Map whereJson, PageQuery pageable);
/**
* 创建
* @param entity /
*/
void create(OrderProcess entity);
/**
* 编辑
* @param entity /
*/
void update(OrderProcess entity);
/**
* 多选删除
* @param ids /
*/
void deleteAll(Set<String> ids);
}

58
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/OrderProcess.java

@ -0,0 +1,58 @@
package org.nl.wms.sch.process.service.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @description /
* @author order_process
* @date 2024-05-09
**/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("order_process")
public class OrderProcess implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "order_id", type = IdType.NONE)
@ApiModelProperty(value = "ID")
private String order_id;
@ApiModelProperty(value = "订单号")
private String order;
@ApiModelProperty(value = "工序")
private String process;
@ApiModelProperty(value = "额定最后期限")
private String last_time;
@ApiModelProperty(value = "创建人标识")
private String create_id;
@ApiModelProperty(value = "创建人")
private String create_name;
@ApiModelProperty(value = "创建时间")
private String create_time;
@ApiModelProperty(value = "修改人标识")
private String update_id;
@ApiModelProperty(value = "修改人")
private String update_name;
@ApiModelProperty(value = "修改时间")
private String update_time;
@ApiModelProperty(value = "是否删除")
private String is_delete;
}

12
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.java

@ -0,0 +1,12 @@
package org.nl.wms.sch.process.service.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.wms.sch.process.service.dao.OrderProcess;
/**
* @author order_process
* @date 2024-05-09
**/
public interface OrderProcessMapper extends BaseMapper<OrderProcess> {
}

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.sch.process.service.dao.mapper.OrderProcessMapper">
</mapper>

46
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessDto.java

@ -0,0 +1,46 @@
package org.nl.wms.sch.process.service.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @description /
* @author order_process
* @date 2024-05-09
**/
@Data
public class OrderProcessDto implements Serializable {
/** ID */
private String order_id;
/** 订单号 */
private String order;
/** 工序 */
private String process;
/** 额定最后期限 */
private String last_time;
/** 创建人标识 */
private String create_id;
/** 创建人 */
private String create_name;
/** 创建时间 */
private String create_time;
/** 修改人标识 */
private String update_id;
/** 修改人 */
private String update_name;
/** 修改时间 */
private String update_time;
/** 是否删除 */
private String is_delete;
}

12
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessQuery.java

@ -0,0 +1,12 @@
package org.nl.wms.sch.process.service.dto;
import org.nl.common.domain.query.BaseQuery;
import org.nl.wms.sch.process.service.dao.OrderProcess;
/**
* @author order_process
* @date 2024-05-09
**/
public class OrderProcessQuery extends BaseQuery<OrderProcess> {
}

80
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/impl/OrderProcessServiceImpl.java

@ -0,0 +1,80 @@
package org.nl.wms.sch.process.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.sch.process.service.IOrderProcessService;
import org.nl.wms.sch.process.service.dao.mapper.OrderProcessMapper;
import org.nl.wms.sch.process.service.dao.OrderProcess;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.Set;
/**
* @description 服务实现
* @author order_process
* @date 2024-05-09
**/
@Slf4j
@Service
public class OrderProcessServiceImpl extends ServiceImpl<OrderProcessMapper, OrderProcess> implements IOrderProcessService {
@Autowired
private OrderProcessMapper orderProcessMapper;
@Override
public IPage<OrderProcess> queryAll(Map whereJson, PageQuery page){
LambdaQueryWrapper<OrderProcess> lam = new LambdaQueryWrapper<>();
IPage<OrderProcess> pages = new Page<>(page.getPage() + 1, page.getSize());
orderProcessMapper.selectPage(pages, lam);
return pages;
}
@Override
public void create(OrderProcess entity) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
entity.setOrder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
entity.setCreate_id(currentUserId);
entity.setCreate_name(nickName);
entity.setCreate_time(now);
entity.setUpdate_id(currentUserId);
entity.setUpdate_name(nickName);
entity.setUpdate_time(now);
orderProcessMapper.insert(entity);
}
@Override
public void update(OrderProcess entity) {
OrderProcess dto = orderProcessMapper.selectById(entity.getOrder_id());
if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
entity.setUpdate_id(currentUserId);
entity.setUpdate_name(nickName);
entity.setUpdate_time(now);
orderProcessMapper.updateById(entity);
}
@Override
public void deleteAll(Set<String> ids) {
// 真删除
orderProcessMapper.deleteBatchIds(ids);
}
}

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java

@ -257,6 +257,6 @@ public abstract class AbstractTask {
this.feedbackTaskState(param, schBaseTask, result);
}
protected abstract void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result);
public abstract void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result);
}

38
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java

@ -8,6 +8,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.util.StringUtil;
import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl;
@ -79,7 +81,7 @@ public class CYJKTask extends AbstractTask {
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
for (SchBaseTask task : tasks) {
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str(),task.getVehicle_type());
if (ObjectUtil.isEmpty(point)) {
task.setRemark("未找到所需点位!");
taskService.update(task);
@ -106,18 +108,37 @@ public class CYJKTask extends AbstractTask {
}
//查找空托盘
private SchBasePoint findStartPoint(String startRegionStr) {
private SchBasePoint findStartPoint(String startRegionStr,String vehicleType) {
if (StringUtils.isEmpty(startRegionStr)) {
return null;
}
String[] reginList = startRegionStr.split(",");
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
.eq(SchBasePoint::getPoint_type, "1")
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getIs_used, true);
List<SchBasePoint> schBasePoints = pointService.list(lam);
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
if (ObjectUtil.isNotEmpty(schBasePoints)) {
return schBasePoints.get(0);
}
if (VehicleTypeEnum.LK_RO1.getCode().equals(vehicleType) || VehicleTypeEnum.LK_RO2.getCode().equals(vehicleType)) {
//空托盘从空托盘货架位就近获取,补空料笼从货架及料笼暂存区获取
LambdaQueryWrapper<SchBasePoint> tempAreaLam = new LambdaQueryWrapper<>();
tempAreaLam.eq(SchBasePoint::getRegion_code, "CDLKZC")
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getIs_used, true);
List<SchBasePoint> tempAreaList = pointService.list(tempAreaLam);
return ObjectUtil.isNotEmpty(tempAreaList) ? tempAreaList.get(0) : null;
}
return null;
}
@ -144,14 +165,15 @@ public class CYJKTask extends AbstractTask {
// 终点解锁
endPointObj.setIng_task_code("");
endPointObj.setVehicle_code(taskObj.getVehicle_code());
endPointObj.setVehicle_code2(taskObj.getVehicle_code2());
// endPointObj.setVehicle_type(taskObj.getVehicle_type());
endPointObj.setVehicle_qty(1);
endPointObj.setUpdate_time(DateUtil.now());
pointService.update(endPointObj);
// 起点清空
startPointObj.setVehicle_code("");
startPointObj.setVehicle_code2("");
startPointObj.setIng_task_code("");
startPointObj.setVehicle_type("");
startPointObj.setVehicle_qty(0);
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
startPointObj.setUpdate_time(DateUtil.now());
pointService.updateById(startPointObj);
// 任务完成
@ -186,7 +208,7 @@ public class CYJKTask extends AbstractTask {
}
@Override
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
// 反馈上位系统 反馈上位系统成功后,返回200给acs
AgvStateParam agvStateParam = new AgvStateParam();
agvStateParam.setTask_code(schBaseTask.getTask_code());

104
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java

@ -19,6 +19,8 @@ import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
@ -29,6 +31,7 @@ import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.VehicleTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils;
@ -37,6 +40,7 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import javax.transaction.Transactional;
import java.util.Arrays;
import java.util.List;
@ -58,10 +62,9 @@ public class CYXLTask extends AbstractTask {
@Autowired
private ISchBaseTaskconfigService taskConfigService;
@Autowired
private IPdmBdWorkorderService workorderService;
@Autowired
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
@Autowired
private IMaterialVehicleBindService materialVehicleBindService;
@Autowired
private AcsToWmsService acsToWmsService;
@ -71,7 +74,7 @@ public class CYXLTask extends AbstractTask {
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
for (SchBaseTask task : tasks) {
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str());
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str(), task.getVehicle_type());
if (ObjectUtil.isEmpty(point)) {
task.setRemark("未找到所需点位!");
taskService.update(task);
@ -94,12 +97,13 @@ public class CYXLTask extends AbstractTask {
*
* @return
*/
private SchBasePoint findNextPoint(String nextReginStr) {
//todo 区域优先级,暂时按照创建任务配置时,区域选择顺序
private SchBasePoint findNextPoint(String nextReginStr, String vehicleType) {
//todo 需要和外部系统确认载具类型vehicleType参数值,暂时使用PointStatusEnum
String[] reginList = nextReginStr.split(",");
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
.eq(SchBasePoint::getCan_vehicle_type, VehicleTypeEnum.GTP.getCode())
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
.or()
.eq(SchBasePoint::getIng_task_code, ""))
@ -122,13 +126,6 @@ public class CYXLTask extends AbstractTask {
throw new BadRequestException("该任务已取消!");
}
// 获取参数
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
? JSONObject.parseObject(taskObj.getExt_group_data())
: null;
// 载具编码:没有就创建一个
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
? taskObj.getVehicle_code()
: IdUtil.getSnowflake(1, 1).nextIdStr();
String startPoint = taskObj.getPoint_code1(); // 获取起点
String endPoint = taskObj.getPoint_code2(); // 获取终点
SchBasePoint startPointObj = pointService.getById(startPoint);
@ -145,41 +142,13 @@ public class CYXLTask extends AbstractTask {
}
// 终点解锁
endPointObj.setIng_task_code("");
// endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code : endPointObj.getVehicle_code());
endPointObj.setVehicle_code(taskObj.getVehicle_code());
endPointObj.setVehicle_qty(1);
endPointObj.setVehicle_type(taskObj.getVehicle_type());
endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
pointService.update(endPointObj);
// 要把数据存到组盘表 -> 改造公共方法,返回id
//todo 涉及一对多、设置物料类型为待分拣冲压件、载具类型
// SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
// groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
// groupEntity.setCreate_id("2");
// groupEntity.setCreate_name("ACS");
// groupEntity.setCreate_time(DateUtil.now());
// groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
// ? workorderCode.getMaterial_id()
// : "");
// groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
// ? workorderCode.getStanding_time()
// : 0);
// groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
// ? extGroupData.getBigDecimal("material_qty")
// : BigDecimal.valueOf(0));
// groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
// ? workorderCode.getWorkorder_code()
// : "");
// groupEntity.setVehicle_code(vehicle_code);
// groupEntity.setVehicle_type(taskObj.getVehicle_type());
// groupEntity.setPoint_code(startPoint);
// groupEntity.setPoint_name(startPointObj.getPoint_name());
// groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
// groupEntity.setInstorage_time(DateUtil.now());
// groupEntity.setTask_code(taskObj.getTask_code());
// groupEntity.setMove_way(startPoint);
// groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
// groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
// groupEntity.setIs_delete(false);
// groupEntity.setMove_way(startPoint);
// vehiclematerialgroupService.save(groupEntity);
// 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
// taskObj.setGroup_id(groupEntity.getGroup_id());
@ -187,7 +156,7 @@ public class CYXLTask extends AbstractTask {
JSONObject jsonObject = new JSONObject();
jsonObject.put("task_code", IdUtil.getSnowflake(1, 1).nextIdStr());
jsonObject.put("taskType", "CYJKTask");
jsonObject.put("next_device_code",taskObj.getPoint_code1());
jsonObject.put("next_device_code", taskObj.getPoint_code1());
acsToWmsService.acsApply(jsonObject);
}
if (status.equals(TaskStatus.CANCELED)) { // 取消
@ -215,7 +184,8 @@ public class CYXLTask extends AbstractTask {
}
@Override
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
@Transactional
public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
// 反馈上位系统 反馈上位系统成功后,返回200给acs
AgvStateParam agvStateParam = new AgvStateParam();
agvStateParam.setTask_code(schBaseTask.getTask_code());
@ -228,7 +198,37 @@ public class CYXLTask extends AbstractTask {
agvStateParam.setStatus("1");
//叉车到位 请求取货
String url = iotUrl + "iot/agvarrive";
applyIot(url, agvStateParam, result);
JSONObject jsonObject = applyIot(url, agvStateParam, result);
if (jsonObject != null) {
//todo 校验返回的物料信息和订单工艺信息
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
groupEntity.setCreate_id("2");
groupEntity.setCreate_name("ACS");
groupEntity.setCreate_time(DateUtil.now());
groupEntity.setVehicle_code(jsonObject.getString("vehicle_code"));
groupEntity.setVehicle_type(schBaseTask.getVehicle_type());
groupEntity.setPoint_code(startPoint.getPoint_code());
groupEntity.setPoint_name(startPoint.getPoint_name());
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
groupEntity.setInstorage_time(DateUtil.now());
groupEntity.setTask_code(schBaseTask.getTask_code());
groupEntity.setMove_way(startPoint.getPoint_code());
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
groupEntity.setIs_delete(false);
vehiclematerialgroupService.save(groupEntity);
//todo 多个物料信息绑定
MaterialVehicleBind materialVehicleBind = new MaterialVehicleBind();
materialVehicleBind.setId(IdUtil.getSnowflake(1, 1).nextIdStr());
materialVehicleBind.setCreate_time(DateUtil.now());
materialVehicleBind.setVehicle_code(jsonObject.getString("vehicle_code"));
materialVehicleBind.setGroup_id(groupEntity.getGroup_id());
materialVehicleBind.setMaterial_code(jsonObject.getString("material_code"));
materialVehicleBind.setMaterial_name(jsonObject.getString("material_name"));
materialVehicleBind.setOrder_code(jsonObject.getString("order_code"));
materialVehicleBindService.save(materialVehicleBind);
}
//锁住起点
startPoint.setIng_task_code(schBaseTask.getTask_code());
pointService.update(startPoint);
@ -244,12 +244,13 @@ public class CYXLTask extends AbstractTask {
JSONObject jsonObject = new JSONObject();
jsonObject.put("task_code", IdUtil.getSnowflake(1, 1).nextIdStr());
jsonObject.put("taskType", "CYJKTask");
jsonObject.put("next_device_code",schBaseTask.getPoint_code1());
jsonObject.put("vehicleType", schBaseTask.getVehicle_type());
jsonObject.put("next_device_code", schBaseTask.getPoint_code1());
acsToWmsService.acsApply(jsonObject);
}
}
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
private JSONObject applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
String jsonParam = JSON.toJSONString(agvStateParam);
log.info("请求iot参数为:{}", jsonParam);
try {
@ -261,10 +262,12 @@ public class CYXLTask extends AbstractTask {
log.info("请求iot成功,返回结果为:{}", res);
result.setCode(HttpStatus.OK.value());
result.setMessage("请求iot成功!");
return res.getJSONObject("data");
} else {
log.error("请求iot失败:{}", res);
result.setCode(HttpStatus.BAD_REQUEST.value());
result.setMessage("请求iot失败!");
return null;
}
} catch (Exception e) {
String msg = e.getMessage();
@ -272,6 +275,7 @@ public class CYXLTask extends AbstractTask {
log.error("请求iot失败:{}", msg);
result.setCode(HttpStatus.BAD_REQUEST.value());
result.setMessage("请求iot失败!");
return null;
}
}

263
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJJKTask.java

@ -0,0 +1,263 @@
package org.nl.wms.sch.task_manage.task.tasks.fj;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.service.WmsToAcsService;
import org.nl.wms.ext.service.dto.to.BaseResponse;
import org.nl.wms.ext.service.dto.to.iot.AgvStateParam;
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.VehicleTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
/**
* @Author: sxp
* @Description: 分拣叫空盘
*/
@Slf4j
@Component
@TaskType("FJJKTask")
@Lazy
public class FJJKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "FJJKTask";
/**
* 入口
*/
private static String ENTRANCE = "1";
@Autowired
private ISchBasePointService pointService;
@Autowired
private ISchBaseTaskService taskService;
@Autowired
private ISchBaseTaskconfigService taskConfigService;
@Autowired
private IPdmBdWorkorderService workorderService;
@Autowired
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
@Autowired
private PointMapper pointMapper;
@Autowired
private WmsToAcsService wmsToAcsService;
@Override
// @Transactional(rollbackFor = Exception.class)
protected void create() throws BadRequestException {
// 获取任务
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
// 配置信息
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
for (SchBaseTask task : tasks) {
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str(),task.getVehicle_type());
if (ObjectUtil.isEmpty(point)) {
task.setRemark("未找到所需点位!");
taskService.update(task);
// 消息通知
log.info("冲压机叫空盘未找到所需点位!");
continue;
}
// 设置起点并修改创建成功状态
task.setPoint_code1(point.getPoint_code());
task.setTask_status(TaskStatus.CREATED.getCode());
task.setRemark("创建完成");
task.setVehicle_code(point.getVehicle_code());
task.setVehicle_type(point.getVehicle_type());
taskService.update(task);
//发起任务时先把点位占用,防止发起重复任务
point.setIng_task_code(task.getTask_code());
point.setUpdate_id(GeneralDefinition.ACS_ID);
point.setUpdate_name(GeneralDefinition.ACS_NAME);
point.setUpdate_time(DateUtil.now());
pointService.update(point);
//下发
this.renotifyAcs(task);
}
}
//查找空托盘
private SchBasePoint findStartPoint(String startRegionStr,String vehicleType) {
if (StringUtils.isEmpty(startRegionStr)) {
return null;
}
String[] reginList = startRegionStr.split(",");
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getIs_used, true);
List<SchBasePoint> schBasePoints = pointService.list(lam);
if (ObjectUtil.isNotEmpty(schBasePoints)) {
return schBasePoints.get(0);
}
if (VehicleTypeEnum.LK_RO1.getCode().equals(vehicleType) || VehicleTypeEnum.LK_RO2.getCode().equals(vehicleType)) {
//空托盘从空托盘货架位就近获取,补空料笼从货架及料笼暂存区获取
LambdaQueryWrapper<SchBasePoint> tempAreaLam = new LambdaQueryWrapper<>();
tempAreaLam.eq(SchBasePoint::getRegion_code, "CDLKZC")
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getIs_used, true);
List<SchBasePoint> tempAreaList = pointService.list(tempAreaLam);
return ObjectUtil.isNotEmpty(tempAreaList) ? tempAreaList.get(0) : null;
}
return null;
}
@Override
protected void updateStatus(String task_code, TaskStatus status) {
// 校验任务
SchBaseTask taskObj = taskService.getById(task_code);
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成!");
}
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
throw new BadRequestException("该任务已取消!");
}
String startPoint = taskObj.getPoint_code1(); // 获取起点
String endPoint = taskObj.getPoint_code2(); // 获取终点
SchBasePoint startPointObj = pointService.getById(startPoint);
SchBasePoint endPointObj = pointService.getById(endPoint);
// 根据传来的类型去对任务进行操作
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
taskObj.setRemark("执行中");
}
if (status.equals(TaskStatus.FINISHED)) { // 完成
// 终点解锁
endPointObj.setIng_task_code("");
endPointObj.setVehicle_code(taskObj.getVehicle_code());
// endPointObj.setVehicle_type(taskObj.getVehicle_type());
endPointObj.setVehicle_qty(1);
endPointObj.setUpdate_time(DateUtil.now());
pointService.update(endPointObj);
// 起点清空
startPointObj.setVehicle_code("");
startPointObj.setVehicle_type("");
startPointObj.setVehicle_qty(0);
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
startPointObj.setUpdate_time(DateUtil.now());
pointService.updateById(startPointObj);
// 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setRemark("任务完成");
}
if (status.equals(TaskStatus.CANCELED)) { // 取消
// 终点解锁
if (ObjectUtil.isNotEmpty(endPointObj)) {
endPointObj.setIng_task_code("");
pointService.update(endPointObj);
}
// 起点解锁
if (ObjectUtil.isNotEmpty(startPointObj)) {
startPointObj.setIng_task_code("");
pointService.update(startPointObj);
}
taskObj.setRemark("任务取消");
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
}
taskService.update(taskObj);
}
@Override
public void forceFinish(String task_code) {
this.updateStatus(task_code, TaskStatus.FINISHED);
}
@Override
public void cancel(String task_code) {
this.updateStatus(task_code, TaskStatus.CANCELED);
}
@Override
public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
// 反馈上位系统 反馈上位系统成功后,返回200给acs
AgvStateParam agvStateParam = new AgvStateParam();
agvStateParam.setTask_code(schBaseTask.getTask_code());
agvStateParam.setDevice_code(schBaseTask.getPoint_code2());
agvStateParam.setVehicle_code(schBaseTask.getVehicle_code());
String phase = param.getString("phase");
String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue();
SchBasePoint endPoint = pointService.getById(schBaseTask.getPoint_code2());
if ("7".equals(phase)) {
//todo 请求放货状态需要修改
agvStateParam.setStatus("3");
//叉车到位 请求放货
String url = iotUrl + "iot/agvarrive";
applyIot(url, agvStateParam, result);
//锁住终点
endPoint.setIng_task_code(schBaseTask.getTask_code());
pointService.update(endPoint);
}
if ("9".equals(phase)) {
//todo 请求放货状态需要修改
agvStateParam.setStatus("4");
//取货完成,请求离开
String url = iotUrl + "iot/agvfinish";
applyIot(url, agvStateParam, result);
//终点解锁 设置载具类型和编码
endPoint.setIng_task_code("");
// endPoint.setVehicle_code(schBaseTask.getVehicle_code());
// endPoint.setVehicle_type(schBaseTask.getVehicle_type());
pointService.update(endPoint);
}
}
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
String jsonParam = JSON.toJSONString(agvStateParam);
log.info("请求iot参数为:{}", jsonParam);
try {
String resultMsg = HttpRequest.post(url)
.body(jsonParam)
.execute().body();
JSONObject res = JSONObject.parseObject(resultMsg);
if ("200".equals(res.getString("code"))) {
log.info("请求iot成功,返回结果为:{}", res);
result.setCode(HttpStatus.OK.value());
result.setMessage("请求iot成功!");
} else {
log.error("请求iot失败:{}", res);
result.setCode(HttpStatus.BAD_REQUEST.value());
result.setMessage("请求iot失败!");
}
} catch (Exception e) {
String msg = e.getMessage();
//请求iot失败
log.error("请求iot失败:{}", msg);
result.setCode(HttpStatus.BAD_REQUEST.value());
result.setMessage("请求iot失败!");
}
}
}

9
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java

@ -88,6 +88,8 @@ public class FJSLTask extends AbstractTask {
}
// 设置起点并修改创建成功状态
task.setPoint_code1(point.getPoint_code());
task.setVehicle_code(point.getVehicle_code());
task.setVehicle_type(point.getVehicle_type());
task.setTask_status(TaskStatus.CREATED.getCode());
task.setRemark("");
taskService.update(task);
@ -146,14 +148,15 @@ public class FJSLTask extends AbstractTask {
// 终点解锁
endPointObj.setIng_task_code("");
endPointObj.setVehicle_code(taskObj.getVehicle_code());
endPointObj.setVehicle_code2(taskObj.getVehicle_code2());
endPointObj.setVehicle_qty(1);
endPointObj.setUpdate_time(DateUtil.now());
pointService.update(endPointObj);
// 起点清空
startPointObj.setVehicle_code("");
startPointObj.setVehicle_code2("");
startPointObj.setIng_task_code("");
startPointObj.setVehicle_type("");
startPointObj.setVehicle_qty(0);
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
startPointObj.setUpdate_time(DateUtil.now());
pointService.updateById(startPointObj);
//todo 分拣上料完成后 组盘信息解绑
@ -199,7 +202,7 @@ public class FJSLTask extends AbstractTask {
}
@Override
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
// 反馈上位系统 反馈上位系统成功后,返回200给acs
AgvStateParam agvStateParam = new AgvStateParam();
agvStateParam.setTask_code(schBaseTask.getTask_code());

1
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java

@ -94,6 +94,7 @@ public class FJXLTask extends AbstractTask {
* @return
*/
private SchBasePoint findNextPoint(String nextReginStr) {
//todo 添加点位类型为对应载具
String[] reginList = nextReginStr.split(",");
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))

125
lms/nladmin-ui/src/views/wms/sch/materialBind/index.vue

@ -0,0 +1,125 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="ID">
<el-input v-model="form.id" style="width: 370px;" />
</el-form-item>
<el-form-item label="物料编码">
<el-input v-model="form.material_code" style="width: 370px;" />
</el-form-item>
<el-form-item label="物料名称">
<el-input v-model="form.material_name" style="width: 370px;" />
</el-form-item>
<el-form-item label="托盘号">
<el-input v-model="form.vehicle_code" style="width: 370px;" />
</el-form-item>
<el-form-item label="物料数量">
<el-input v-model="form.material_num" style="width: 370px;" />
</el-form-item>
<el-form-item label="订单号">
<el-input v-model="form.order_code" style="width: 370px;" />
</el-form-item>
<el-form-item label="位置">
<el-input v-model="form.position" style="width: 370px;" />
</el-form-item>
<el-form-item label="创建时间">
<el-input v-model="form.create_time" style="width: 370px;" />
</el-form-item>
<el-form-item label="修改时间">
<el-input v-model="form.update_time" style="width: 370px;" />
</el-form-item>
<el-form-item label="是否删除">
<el-input v-model="form.is_delete" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="id" label="ID" :min-width="flexWidth('id',crud.data,'ID')"/>
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')"/>
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')"/>
<el-table-column prop="vehicle_code" label="托盘号" :min-width="flexWidth('vehicle_code',crud.data,'托盘号')"/>
<el-table-column prop="material_num" label="物料数量" :min-width="flexWidth('material_num',crud.data,'物料数量')"/>
<el-table-column prop="order_code" label="订单号" :min-width="flexWidth('order_code',crud.data,'订单号')"/>
<el-table-column prop="position" label="位置" :min-width="flexWidth('position',crud.data,'位置')"/>
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')"/>
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')"/>
<el-table-column prop="is_delete" label="是否删除" :min-width="flexWidth('is_delete',crud.data,'是否删除')"/>
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudMaterialVehicleBind from './materialVehicleBind'
import CRUD, {crud, form, header, presenter} from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
const defaultForm = {
id: null,
material_code: null,
material_name: null,
vehicle_code: null,
material_num: null,
order_code: null,
position: null,
create_time: null,
update_time: null,
is_delete: null
}
export default {
name: 'MaterialVehicleBind',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '载具物料信息绑定',
url: 'api/materialVehicleBind',
idField: 'id',
sort: 'id,desc',
crudMethod: { ...crudMaterialVehicleBind }
})
},
data() {
return {
permission: {
},
rules: {
} }
},
methods: {
// false
[CRUD.HOOK.beforeRefresh]() {
return true
}
}
}
</script>
<style scoped>
</style>

27
lms/nladmin-ui/src/views/wms/sch/materialBind/materialVehicleBind.js

@ -0,0 +1,27 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/materialVehicleBind',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/materialVehicleBind/',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/materialVehicleBind',
method: 'put',
data
})
}
export default { add, edit, del }

4
lms/nladmin-ui/src/views/wms/sch/point/index.vue

@ -217,7 +217,7 @@
<el-form-item v-if="form.point_status !== '1'" label="子载具编码" prop="vehicle_code2">
<el-input v-model="form.vehicle_code2" clearable style="width: 370px;" />
</el-form-item>
<!-- <el-form-item label="可放载具类型" prop="can_vehicle_types">
<el-form-item label="可放载具类型" prop="can_vehicle_types">
<el-select v-model="form.can_vehicle_types" multiple placeholder="请选择" clearable style="width: 370px;">
<el-option
v-for="item in dict.vehicle_type"
@ -226,7 +226,7 @@
:value="item.value"
/>
</el-select>
</el-form-item> -->
</el-form-item>
<el-form-item label="载具数量" prop="vehicle_qty">
<el-input-number v-model="form.vehicle_qty" style="width: 370px;" :controls="false" class="clear-number-input" :min="0" :precision="0" :max="99999" label="载具数量" size="mini" />
</el-form-item>

130
lms/nladmin-ui/src/views/wms/sch/process/index.vue

@ -0,0 +1,130 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="ID">
<el-input v-model="form.order_id" style="width: 370px;" />
</el-form-item>
<el-form-item label="订单号">
<el-input v-model="form.order" style="width: 370px;" />
</el-form-item>
<el-form-item label="工序">
<el-input v-model="form.process" style="width: 370px;" />
</el-form-item>
<el-form-item label="额定最后期限">
<el-input v-model="form.last_time" style="width: 370px;" />
</el-form-item>
<el-form-item label="创建人标识">
<el-input v-model="form.create_id" style="width: 370px;" />
</el-form-item>
<el-form-item label="创建人">
<el-input v-model="form.create_name" style="width: 370px;" />
</el-form-item>
<el-form-item label="创建时间">
<el-input v-model="form.create_time" style="width: 370px;" />
</el-form-item>
<el-form-item label="修改人标识">
<el-input v-model="form.update_id" style="width: 370px;" />
</el-form-item>
<el-form-item label="修改人">
<el-input v-model="form.update_name" style="width: 370px;" />
</el-form-item>
<el-form-item label="修改时间">
<el-input v-model="form.update_time" style="width: 370px;" />
</el-form-item>
<el-form-item label="是否删除">
<el-input v-model="form.is_delete" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="order_id" label="ID" :min-width="flexWidth('order_id',crud.data,'ID')"/>
<el-table-column prop="order" label="订单号" :min-width="flexWidth('order',crud.data,'订单号')"/>
<el-table-column prop="process" label="工序" :min-width="flexWidth('process',crud.data,'工序')"/>
<el-table-column prop="last_time" label="额定最后期限" :min-width="flexWidth('last_time',crud.data,'额定最后期限')"/>
<el-table-column prop="create_id" label="创建人标识" :min-width="flexWidth('create_id',crud.data,'创建人标识')"/>
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')"/>
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')"/>
<el-table-column prop="update_id" label="修改人标识" :min-width="flexWidth('update_id',crud.data,'修改人标识')"/>
<el-table-column prop="update_name" label="修改人" :min-width="flexWidth('update_name',crud.data,'修改人')"/>
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')"/>
<el-table-column prop="is_delete" label="是否删除" :min-width="flexWidth('is_delete',crud.data,'是否删除')"/>
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudOrderProcess from './orderProcess'
import CRUD, {crud, form, header, presenter} from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
const defaultForm = {
order_id: null,
order: null,
process: null,
last_time: null,
create_id: null,
create_name: null,
create_time: null,
update_id: null,
update_name: null,
update_time: null,
is_delete: null
}
export default {
name: 'OrderProcess',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '订单工艺信息',
url: 'api/orderProcess',
idField: 'order_id',
sort: 'order_id,desc',
crudMethod: { ...crudOrderProcess }
})
},
data() {
return {
permission: {
},
rules: {
} }
},
methods: {
// false
[CRUD.HOOK.beforeRefresh]() {
return true
}
}
}
</script>
<style scoped>
</style>

27
lms/nladmin-ui/src/views/wms/sch/process/orderProcess.js

@ -0,0 +1,27 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/orderProcess',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/orderProcess/',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/orderProcess',
method: 'put',
data
})
}
export default { add, edit, del }
Loading…
Cancel
Save