Browse Source

add:增加物料载具绑定基础信息;分拣系统查询库存接口;分拣系统下发叫料请求

update:修改分拣上料任务
master^2
songxiaopeng 11 months ago
parent
commit
559605c3d9
  1. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java
  2. 4
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java
  3. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingReq.java
  4. 15
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java
  5. 66
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/controller/MaterialVehicleBindController.java
  6. 48
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/IMaterialVehicleBindService.java
  7. 58
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/dao/MaterialVehicleBind.java
  8. 12
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/dao/mapper/MaterialVehicleBindMapper.java
  9. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/dao/mapper/MaterialVehicleBindMapper.xml
  10. 43
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/dto/MaterialVehicleBindDto.java
  11. 12
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/dto/MaterialVehicleBindQuery.java
  12. 84
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/impl/MaterialVehicleBindServiceImpl.java
  13. 48
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java

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

@ -53,11 +53,19 @@ public class IotToWmsController {
return new ResponseEntity<>(iotToWmsService.orders(iotOrdersReq), HttpStatus.OK);
}
@PostMapping("/fjMaterialInfo")
@Log("sorting系统查询库存")
@PostMapping("/sortingMaterialInfo")
@Log("分拣系统查询库存")
@ApiOperation("sorting系统查询库存")
public ResponseEntity<Object> sortingMaterialInfo(@RequestBody SortingReq sortingReq) {
return new ResponseEntity<>(iotToWmsService.sortingMaterialInfo(sortingReq), HttpStatus.OK);
}
@PostMapping("/sortingCallMaterial")
@Log("分拣系统下发叫料请求")
@ApiOperation("分拣系统下发叫料请求")
public ResponseEntity<Object> fjMaterialInfo(@RequestBody SortingReq sortingReq) {
return new ResponseEntity<>(iotToWmsService.fjMaterialInfo(sortingReq), HttpStatus.OK);
return new ResponseEntity<>(iotToWmsService.sortingCallMaterial(sortingReq), HttpStatus.OK);
}
}

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

@ -21,5 +21,7 @@ public interface IotToWmsService {
BaseResponse orders(IotOrdersReq iotOrdersReq);
List<MaterialVehicleBind> fjMaterialInfo(SortingReq sortingReq);
List<MaterialVehicleBind> sortingMaterialInfo(SortingReq sortingReq);
BaseResponse sortingCallMaterial(SortingReq sortingReq);
}

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

@ -8,4 +8,6 @@ import lombok.Data;
@Data
public class SortingReq {
private String order;
private String startDeviceCode;
private String endDeviceCode;
}

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

@ -1,5 +1,6 @@
package org.nl.wms.ext.service.impl;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.ext.service.AcsToWmsService;
@ -8,6 +9,7 @@ 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.pda.service.dao.vo.PdaResponseVo;
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
import org.springframework.beans.factory.annotation.Autowired;
@ -47,9 +49,20 @@ public class IotToWmsServiceImpl implements IotToWmsService {
}
@Override
public List<MaterialVehicleBind> fjMaterialInfo(SortingReq sortingReq) {
public List<MaterialVehicleBind> sortingMaterialInfo(SortingReq sortingReq) {
String order = sortingReq.getOrder();
return materialVehicleBindService.selectByOrder(order);
}
@Override
public BaseResponse sortingCallMaterial(SortingReq sortingReq) {
JSONObject param = new JSONObject();
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
param.put("taskType", "FJSLTask");
param.put("start_device_code",sortingReq.getStartDeviceCode());
param.put("end_device_code",sortingReq.getEndDeviceCode());
acsToWmsService.acsApply(param);
return BaseResponse.responseOk("任务下发成功");
}
}

66
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/controller/MaterialVehicleBindController.java

@ -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);
}
}

48
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/IMaterialVehicleBindService.java

@ -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);
}

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

@ -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;
}

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

@ -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> {
}

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/dao/mapper/MaterialVehicleBindMapper.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.materialBind.service.dao.mapper.MaterialVehicleBindMapper">
</mapper>

43
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/dto/MaterialVehicleBindDto.java

@ -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;
}

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

@ -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> {
}

84
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/materialBind/service/impl/MaterialVehicleBindServiceImpl.java

@ -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);
}
}

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

@ -7,6 +7,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;
@ -16,6 +18,7 @@ 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.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
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;
@ -50,10 +53,6 @@ import java.util.List;
@Lazy
public class FJSLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "FJSLTask";
/**
* 入口
*/
private static String ENTRANCE = "1";
@Autowired
private ISchBasePointService pointService;
@Autowired
@ -61,13 +60,9 @@ public class FJSLTask extends AbstractTask {
@Autowired
private ISchBaseTaskconfigService taskConfigService;
@Autowired
private IPdmBdWorkorderService workorderService;
@Autowired
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
@Autowired
private PointMapper pointMapper;
@Autowired
private WmsToAcsService wmsToAcsService;
private IMaterialVehicleBindService materialVehicleBindService;
@Override
// @Transactional(rollbackFor = Exception.class)
@ -78,7 +73,7 @@ public class FJSLTask 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(task, taskConfig.getStart_region_str());
if (ObjectUtil.isEmpty(point)) {
task.setRemark("未找到所需点位!");
taskService.update(task);
@ -104,14 +99,17 @@ public class FJSLTask extends AbstractTask {
}
}
//查找待分拣物料 todo 需要关联组盘信息去查
private SchBasePoint findStartPoint(String startRegionStr) {
//查找起点,如果上位系统指定起点,直接返回起点,未指定,就从数据库中查找
private SchBasePoint findStartPoint(SchBaseTask task, String startRegionStr) {
if (StringUtils.isNotEmpty(task.getPoint_code1())) {
return pointService.selectByExtPointCode(task.getPoint_code1());
}
//从待分拣货架查找 物料类型是待分拣物料,物料类型字段尚未确定
String[] reginList = startRegionStr.split(",");
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
.eq(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode())
.eq(SchBasePoint::getPoint_type,"1")
.eq(SchBasePoint::getCan_vehicle_type, task.getVehicle_type())
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
@ -159,17 +157,18 @@ public class FJSLTask extends AbstractTask {
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
startPointObj.setUpdate_time(DateUtil.now());
pointService.updateById(startPointObj);
//todo 分拣上料完成后 组盘信息解绑
// SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id());
// vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
// vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code());
// vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name());
// vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code());
// vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code());
// vehicleMaterialGroupObj.setUpdate_id(GeneralDefinition.ACS_ID);
// vehicleMaterialGroupObj.setUpdate_name(GeneralDefinition.ACS_NAME);
// vehicleMaterialGroupObj.setUpdate_time(DateUtil.now());
// vehiclematerialgroupService.updateById(vehicleMaterialGroupObj);
// 分拣上料完成后 组盘信息解绑
SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id());
vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code());
vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name());
vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code());
vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code());
vehicleMaterialGroupObj.setUpdate_id(GeneralDefinition.ACS_ID);
vehicleMaterialGroupObj.setUpdate_name(GeneralDefinition.ACS_NAME);
vehicleMaterialGroupObj.setUpdate_time(DateUtil.now());
vehiclematerialgroupService.updateById(vehicleMaterialGroupObj);
materialVehicleBindService.deleteByGroupId(vehicleMaterialGroupObj.getGroup_id());
// 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setRemark("任务完成");
@ -234,6 +233,7 @@ public class FJSLTask extends AbstractTask {
pointService.update(endPoint);
}
}
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
String jsonParam = JSON.toJSONString(agvStateParam);
log.info("请求iot参数为:{}", jsonParam);

Loading…
Cancel
Save