41 changed files with 1807 additions and 95 deletions
@ -0,0 +1,16 @@ |
|||
package org.nl.wms.ext.service.dto.to.iot; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author songxiaopeng |
|||
*/ |
|||
@Data |
|||
public class BendReq { |
|||
//订单号
|
|||
private String order; |
|||
//组盘ID
|
|||
private String groupId; |
|||
//请求点位
|
|||
private String endDeviceCode; |
|||
} |
@ -0,0 +1,13 @@ |
|||
package org.nl.wms.ext.service.dto.to.iot; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author Administrator |
|||
*/ |
|||
@Data |
|||
public class SortingReq { |
|||
private String order; |
|||
private String startDeviceCode; |
|||
private String endDeviceCode; |
|||
} |
@ -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; |
|||
} |
@ -0,0 +1,66 @@ |
|||
package org.nl.wms.sch.materialBind.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.materialBind.service.IMaterialVehicleBindService; |
|||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind; |
|||
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 songxiaopeng |
|||
* @date 2024-05-10 |
|||
**/ |
|||
@Slf4j |
|||
@RestController |
|||
@Api(tags = "载具物料信息绑定管理") |
|||
@RequestMapping("/api/materialVehicleBind") |
|||
public class MaterialVehicleBindController { |
|||
|
|||
@Autowired |
|||
private IMaterialVehicleBindService materialVehicleBindService; |
|||
|
|||
@GetMapping |
|||
@Log("查询载具物料信息绑定") |
|||
@ApiOperation("查询载具物料信息绑定") |
|||
//@SaCheckPermission("@el.check('materialVehicleBind:list')")
|
|||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page){ |
|||
return new ResponseEntity<>(TableDataInfo.build(materialVehicleBindService.queryAll(whereJson,page)),HttpStatus.OK); |
|||
} |
|||
|
|||
@PostMapping |
|||
@Log("新增载具物料信息绑定") |
|||
@ApiOperation("新增载具物料信息绑定") |
|||
//@SaCheckPermission("@el.check('materialVehicleBind:add')")
|
|||
public ResponseEntity<Object> create(@Validated @RequestBody MaterialVehicleBind entity){ |
|||
materialVehicleBindService.create(entity); |
|||
return new ResponseEntity<>(HttpStatus.CREATED); |
|||
} |
|||
|
|||
@PutMapping |
|||
@Log("修改载具物料信息绑定") |
|||
@ApiOperation("修改载具物料信息绑定") |
|||
//@SaCheckPermission("@el.check('materialVehicleBind:edit')")
|
|||
public ResponseEntity<Object> update(@Validated @RequestBody MaterialVehicleBind entity){ |
|||
materialVehicleBindService.update(entity); |
|||
return new ResponseEntity<>(HttpStatus.NO_CONTENT); |
|||
} |
|||
|
|||
@Log("删除载具物料信息绑定") |
|||
@ApiOperation("删除载具物料信息绑定") |
|||
//@SaCheckPermission("@el.check('materialVehicleBind:del')")
|
|||
@DeleteMapping |
|||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) { |
|||
materialVehicleBindService.deleteAll(ids); |
|||
return new ResponseEntity<>(HttpStatus.OK); |
|||
} |
|||
} |
@ -0,0 +1,48 @@ |
|||
package org.nl.wms.sch.materialBind.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.materialBind.service.dao.MaterialVehicleBind; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.Set; |
|||
|
|||
/** |
|||
* @description 服务接口 |
|||
* @author songxiaopeng |
|||
* @date 2024-05-10 |
|||
**/ |
|||
public interface IMaterialVehicleBindService extends IService<MaterialVehicleBind> { |
|||
|
|||
/** |
|||
* 查询数据分页 |
|||
* @param whereJson 条件 |
|||
* @param pageable 分页参数 |
|||
* @return IPage<MaterialVehicleBind> |
|||
*/ |
|||
IPage<MaterialVehicleBind> queryAll(Map whereJson, PageQuery pageable); |
|||
|
|||
/** |
|||
* 创建 |
|||
* @param entity / |
|||
*/ |
|||
void create(MaterialVehicleBind entity); |
|||
|
|||
/** |
|||
* 编辑 |
|||
* @param entity / |
|||
*/ |
|||
void update(MaterialVehicleBind entity); |
|||
|
|||
/** |
|||
* 多选删除 |
|||
* @param ids / |
|||
*/ |
|||
void deleteAll(Set<String> ids); |
|||
|
|||
List<MaterialVehicleBind> selectByOrder(String order); |
|||
|
|||
void deleteByGroupId(String groupId); |
|||
} |
@ -0,0 +1,58 @@ |
|||
package org.nl.wms.sch.materialBind.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 songxiaopeng |
|||
* @date 2024-05-10 |
|||
**/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = false) |
|||
@TableName("material_vehicle_bind") |
|||
public class MaterialVehicleBind implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
@TableId(value = "id", type = IdType.NONE) |
|||
@ApiModelProperty(value = "ID") |
|||
private String id; |
|||
|
|||
@ApiModelProperty(value = "物料编码") |
|||
private String material_code; |
|||
|
|||
@ApiModelProperty(value = "物料名称") |
|||
private String material_name; |
|||
|
|||
@ApiModelProperty(value = "组盘表id") |
|||
private String group_id; |
|||
|
|||
@ApiModelProperty(value = "托盘号") |
|||
private String vehicle_code; |
|||
|
|||
@ApiModelProperty(value = "物料数量") |
|||
private String material_num; |
|||
|
|||
@ApiModelProperty(value = "订单号") |
|||
private String order_code; |
|||
|
|||
@ApiModelProperty(value = "位置") |
|||
private String position; |
|||
|
|||
@ApiModelProperty(value = "创建时间") |
|||
private String create_time; |
|||
|
|||
@ApiModelProperty(value = "修改时间") |
|||
private String update_time; |
|||
|
|||
@ApiModelProperty(value = "是否删除") |
|||
private String is_delete; |
|||
|
|||
} |
@ -0,0 +1,12 @@ |
|||
package org.nl.wms.sch.materialBind.service.dao.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind; |
|||
|
|||
/** |
|||
* @author songxiaopeng |
|||
* @date 2024-05-10 |
|||
**/ |
|||
public interface MaterialVehicleBindMapper extends BaseMapper<MaterialVehicleBind> { |
|||
|
|||
} |
@ -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.materialBind.service.dao.mapper.MaterialVehicleBindMapper"> |
|||
|
|||
</mapper> |
@ -0,0 +1,43 @@ |
|||
package org.nl.wms.sch.materialBind.service.dto; |
|||
|
|||
import lombok.Data; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @description / |
|||
* @author songxiaopeng |
|||
* @date 2024-05-10 |
|||
**/ |
|||
@Data |
|||
public class MaterialVehicleBindDto implements Serializable { |
|||
|
|||
/** ID */ |
|||
private String id; |
|||
|
|||
/** 物料编码 */ |
|||
private String material_code; |
|||
|
|||
/** 物料名称 */ |
|||
private String material_name; |
|||
|
|||
/** 托盘号 */ |
|||
private String vehicle_code; |
|||
|
|||
/** 物料数量 */ |
|||
private String material_num; |
|||
|
|||
/** 订单号 */ |
|||
private String order_code; |
|||
|
|||
/** 位置 */ |
|||
private String position; |
|||
|
|||
/** 创建时间 */ |
|||
private String create_time; |
|||
|
|||
/** 修改时间 */ |
|||
private String update_time; |
|||
|
|||
/** 是否删除 */ |
|||
private String is_delete; |
|||
} |
@ -0,0 +1,12 @@ |
|||
package org.nl.wms.sch.materialBind.service.dto; |
|||
|
|||
import org.nl.common.domain.query.BaseQuery; |
|||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind; |
|||
|
|||
/** |
|||
* @author songxiaopeng |
|||
* @date 2024-05-10 |
|||
**/ |
|||
public class MaterialVehicleBindQuery extends BaseQuery<MaterialVehicleBind> { |
|||
|
|||
} |
@ -0,0 +1,84 @@ |
|||
package org.nl.wms.sch.materialBind.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.materialBind.service.IMaterialVehicleBindService; |
|||
import org.nl.wms.sch.materialBind.service.dao.mapper.MaterialVehicleBindMapper; |
|||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.Set; |
|||
|
|||
/** |
|||
* @author songxiaopeng |
|||
* @description 服务实现 |
|||
* @date 2024-05-10 |
|||
**/ |
|||
@Slf4j |
|||
@Service |
|||
public class MaterialVehicleBindServiceImpl extends ServiceImpl<MaterialVehicleBindMapper, MaterialVehicleBind> implements IMaterialVehicleBindService { |
|||
|
|||
@Autowired |
|||
private MaterialVehicleBindMapper materialVehicleBindMapper; |
|||
|
|||
@Override |
|||
public IPage<MaterialVehicleBind> queryAll(Map whereJson, PageQuery page) { |
|||
LambdaQueryWrapper<MaterialVehicleBind> lam = new LambdaQueryWrapper<>(); |
|||
IPage<MaterialVehicleBind> pages = new Page<>(page.getPage() + 1, page.getSize()); |
|||
materialVehicleBindMapper.selectPage(pages, lam); |
|||
return pages; |
|||
} |
|||
|
|||
@Override |
|||
public void create(MaterialVehicleBind entity) { |
|||
String now = DateUtil.now(); |
|||
entity.setId(IdUtil.getSnowflake(1, 1).nextIdStr()); |
|||
entity.setCreate_time(now); |
|||
entity.setUpdate_time(now); |
|||
materialVehicleBindMapper.insert(entity); |
|||
} |
|||
|
|||
@Override |
|||
public void update(MaterialVehicleBind entity) { |
|||
MaterialVehicleBind dto = materialVehicleBindMapper.selectById(entity.getId()); |
|||
if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); |
|||
String now = DateUtil.now(); |
|||
entity.setUpdate_time(now); |
|||
materialVehicleBindMapper.updateById(entity); |
|||
} |
|||
|
|||
@Override |
|||
public void deleteAll(Set<String> ids) { |
|||
// 真删除
|
|||
materialVehicleBindMapper.deleteBatchIds(ids); |
|||
} |
|||
|
|||
@Override |
|||
public List<MaterialVehicleBind> selectByOrder(String order) { |
|||
LambdaQueryWrapper<MaterialVehicleBind> lam = new LambdaQueryWrapper<>(); |
|||
lam.eq(MaterialVehicleBind::getOrder_code, order) |
|||
.orderByDesc(MaterialVehicleBind::getCreate_time); |
|||
return materialVehicleBindMapper.selectList(lam); |
|||
} |
|||
|
|||
@Override |
|||
public void deleteByGroupId(String groupId) { |
|||
LambdaQueryWrapper<MaterialVehicleBind> lam = new LambdaQueryWrapper<>(); |
|||
lam.eq(MaterialVehicleBind::getGroup_id, groupId) |
|||
.orderByDesc(MaterialVehicleBind::getCreate_time); |
|||
materialVehicleBindMapper.delete(lam); |
|||
} |
|||
|
|||
} |
@ -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); |
|||
} |
|||
} |
@ -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); |
|||
} |
@ -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; |
|||
|
|||
} |
@ -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> { |
|||
|
|||
} |
@ -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> |
@ -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; |
|||
} |
@ -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> { |
|||
|
|||
} |
@ -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); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,214 @@ |
|||
package org.nl.wms.sch.task_manage.task.tasks.fj; |
|||
|
|||
import cn.hutool.core.util.IdUtil; |
|||
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.nl.common.exception.BadRequestException; |
|||
import org.nl.config.SpringContextHolder; |
|||
import org.nl.system.service.param.impl.SysParamServiceImpl; |
|||
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.enums.PointStatusEnum; |
|||
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; |
|||
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: 分拣回库 |
|||
* @Date: 2024/3/11 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@TaskType("FJHKTask") |
|||
@Lazy |
|||
public class FJHKTask extends AbstractTask { |
|||
private static String TASK_CONFIG_CODE = "FJHKTask"; |
|||
@Autowired |
|||
private ISchBasePointService pointService; |
|||
@Autowired |
|||
private ISchBaseTaskService taskService; |
|||
@Autowired |
|||
private ISchBaseTaskconfigService taskConfigService; |
|||
@Autowired |
|||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; |
|||
|
|||
@Override |
|||
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 = findNextPoint(taskConfig.getNext_region_str(), task.getVehicle_type()); |
|||
if (ObjectUtil.isEmpty(point)) { |
|||
task.setRemark("未找到所需点位!"); |
|||
taskService.update(task); |
|||
log.info("分拣下料未找到当前符合条件的点位!"); |
|||
continue; |
|||
} |
|||
task.setPoint_code2(point.getPoint_code()); |
|||
task.setTask_status(TaskStatus.CREATED.getCode()); |
|||
task.setRemark(""); |
|||
taskService.update(task); |
|||
//发起任务时先把点位占用,防止发起重复任务
|
|||
point.setIng_task_code(task.getTask_code()); |
|||
pointService.update(point); |
|||
this.renotifyAcs(task); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 判断目标点位 |
|||
* |
|||
* @return |
|||
*/ |
|||
private SchBasePoint findNextPoint(String nextReginStr, String vehicleType) { |
|||
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, vehicleType) |
|||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
|||
.or() |
|||
.eq(SchBasePoint::getIng_task_code, "")) |
|||
.eq(SchBasePoint::getIs_used, true) |
|||
.orderByAsc(SchBasePoint::getIn_order_seq) |
|||
.orderByAsc(SchBasePoint::getPoint_code); |
|||
List<SchBasePoint> schBasePoints = pointService.list(lam); |
|||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; |
|||
} |
|||
|
|||
@Override |
|||
// @Transactional(rollbackFor = Exception.class)
|
|||
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)) { // 完成
|
|||
// 起点清空
|
|||
if (ObjectUtil.isNotEmpty(startPointObj)) { |
|||
PointUtils.clearPoint(startPointObj); |
|||
} |
|||
// 终点解锁
|
|||
endPointObj.setIng_task_code(""); |
|||
// endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
|||
endPointObj.setVehicle_qty(1); |
|||
pointService.update(endPointObj); |
|||
// 任务完成
|
|||
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); |
|||
taskObj.setRemark("任务完成"); |
|||
} |
|||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
|||
// 终点解锁
|
|||
if (ObjectUtil.isNotEmpty(endPointObj)) { |
|||
endPointObj.setIng_task_code(""); |
|||
//任务取消把原先占用的位置释放
|
|||
pointService.update(endPointObj); |
|||
} |
|||
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 |
|||
protected 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_code1()); |
|||
agvStateParam.setVehicle_code(schBaseTask.getVehicle_code()); |
|||
String phase = param.getString("phase"); |
|||
String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue(); |
|||
SchBasePoint startPoint = pointService.getById(schBaseTask.getPoint_code1()); |
|||
if ("3".equals(phase)) { |
|||
agvStateParam.setStatus("1"); |
|||
//叉车到位 请求取货
|
|||
String url = iotUrl + "iot/agvarrive"; |
|||
applyIot(url, agvStateParam, result); |
|||
//锁住起点
|
|||
startPoint.setIng_task_code(schBaseTask.getTask_code()); |
|||
pointService.update(startPoint); |
|||
} |
|||
if ("5".equals(phase)) { |
|||
agvStateParam.setStatus("2"); |
|||
//取货完成,请求离开
|
|||
String url = iotUrl + "iot/agvfinish"; |
|||
applyIot(url, agvStateParam, result); |
|||
//起点解锁 下发补空托盘任务
|
|||
startPoint.setIng_task_code(""); |
|||
pointService.update(startPoint); |
|||
} |
|||
} |
|||
|
|||
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失败!"); |
|||
} |
|||
|
|||
} |
|||
} |
@ -0,0 +1,264 @@ |
|||
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 |
|||
protected 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失败!"); |
|||
} |
|||
|
|||
} |
|||
} |
@ -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> |
@ -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 } |
@ -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> |
@ -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…
Reference in new issue