no message

main
HUOJIN\92525 2025-09-02 18:40:37 +08:00
parent 42547d103c
commit 37f171c276
4 changed files with 131 additions and 13 deletions

View File

@ -0,0 +1,15 @@
package com.youchain.appupdate.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class BindLargeZy {
@ApiModelProperty(value = "起点", required = true)
String srcPositionCode;
@ApiModelProperty(value = "料箱号", required = true)
List<String> boxList;
}

View File

@ -2,10 +2,7 @@ package com.youchain.appupdate.rest;
import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.AnonymousAccess;
import com.youchain.annotation.Log; import com.youchain.annotation.Log;
import com.youchain.appupdate.request.BindLarge; import com.youchain.appupdate.request.*;
import com.youchain.appupdate.request.LinePoint;
import com.youchain.appupdate.request.BindSmall;
import com.youchain.appupdate.request.Online;
import com.youchain.appupdate.service.NioF3AppService; import com.youchain.appupdate.service.NioF3AppService;
import com.youchain.appupdate.response.LesTask; import com.youchain.appupdate.response.LesTask;
import com.youchain.businessdata.inputJson.UpdateTuggerTrailerInfo; import com.youchain.businessdata.inputJson.UpdateTuggerTrailerInfo;
@ -50,8 +47,8 @@ public class NioF3AppController {
} }
@PostMapping("/bindLargeItemPicking") @PostMapping("/bindLargeItemPicking")
@Log("大件拣选绑定") @Log("大件Dolly绑定")
@ApiOperation("大件拣选绑定") @ApiOperation("大件Dolly绑定")
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> bindLargeItemPicking(@RequestBody BindLarge bindLarge) { public ResponseEntity<Object> bindLargeItemPicking(@RequestBody BindLarge bindLarge) {
try { try {
@ -62,6 +59,19 @@ public class NioF3AppController {
} }
} }
@PostMapping("/bindLargeItemZyPicking")
@Log("大件专用绑定")
@ApiOperation("大件专用绑定")
@AnonymousAccess
public ResponseEntity<Object> bindLargeItemZyPicking(@RequestBody BindLargeZy bindLargeZy) {
try {
nioF3AppService.bindLargeItemZyPicking(bindLargeZy);
return new ResponseEntity<>(ApiResult.success(), HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(ApiResult.fail(e.getMessage()), HttpStatus.BAD_REQUEST);
}
}
@PostMapping("/findByLinePoint") @PostMapping("/findByLinePoint")
@Log("线边库位查询") @Log("线边库位查询")
@ApiOperation("线边库位查询") @ApiOperation("线边库位查询")

View File

@ -1,6 +1,7 @@
package com.youchain.appupdate.service; package com.youchain.appupdate.service;
import com.youchain.appupdate.request.BindLarge; import com.youchain.appupdate.request.BindLarge;
import com.youchain.appupdate.request.BindLargeZy;
import com.youchain.appupdate.request.BindSmall; import com.youchain.appupdate.request.BindSmall;
import com.youchain.appupdate.request.Online; import com.youchain.appupdate.request.Online;
import com.youchain.appupdate.response.LesTask; import com.youchain.appupdate.response.LesTask;
@ -16,11 +17,18 @@ public interface NioF3AppService {
void bindSmallItemPicking(BindSmall bindSmall); void bindSmallItemPicking(BindSmall bindSmall);
/** /**
* * Dolly
* @param bindLarge * @param bindLarge
*/ */
void bindLargeItemPicking(BindLarge bindLarge); void bindLargeItemPicking(BindLarge bindLarge);
/**
*
* @param bindLargeZy
*/
void bindLargeItemZyPicking(BindLargeZy bindLargeZy);
/** /**
* 线 * 线
* @param dstPositionCode * @param dstPositionCode

View File

@ -1,10 +1,10 @@
package com.youchain.appupdate.service.impl; package com.youchain.appupdate.service.impl;
import com.youchain.appupdate.request.BindLarge; import com.youchain.appupdate.request.*;
import com.youchain.appupdate.request.BindSmall;
import com.youchain.appupdate.request.BoxAndDolly;
import com.youchain.appupdate.request.Online;
import com.youchain.appupdate.service.NioF3AppService; import com.youchain.appupdate.service.NioF3AppService;
import com.youchain.basicdata.domain.Item;
import com.youchain.basicdata.repository.ItemRepository;
import com.youchain.basicdata.service.ItemService;
import com.youchain.basicdata.service.PointService; import com.youchain.basicdata.service.PointService;
import com.youchain.businessdata.domain.AgvTask; import com.youchain.businessdata.domain.AgvTask;
import com.youchain.businessdata.domain.Les; import com.youchain.businessdata.domain.Les;
@ -32,6 +32,7 @@ public class NioF3AppServiceImpl implements NioF3AppService {
private final LesRepository lesRepository; private final LesRepository lesRepository;
private final LesService lesService; private final LesService lesService;
private final PointService pointService; private final PointService pointService;
private final ItemService itemService;
private final AgvTaskService agvTaskService; private final AgvTaskService agvTaskService;
private final KMReService kmReService; private final KMReService kmReService;
@ -56,7 +57,7 @@ public class NioF3AppServiceImpl implements NioF3AppService {
String beatCode = getBeatCode(lesList); String beatCode = getBeatCode(lesList);
//创建任务 //创建任务
AgvTask agvTask=createAgvTask(bindSmall.getSrcPositionCode(), lesIds, beatCode); AgvTask agvTask = createAgvTask(bindSmall.getSrcPositionCode(), lesIds, beatCode);
// 下发任务 // 下发任务
kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskQYCJson(agvTask, bindSmall.getShooter(), null)); kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskQYCJson(agvTask, bindSmall.getShooter(), null));
@ -126,7 +127,6 @@ public class NioF3AppServiceImpl implements NioF3AppService {
//获取所有dolly //获取所有dolly
List<String> dollyList = bindLarge.getBoxAndDolly().stream().map(BoxAndDolly::getDolly).collect(Collectors.toList()); List<String> dollyList = bindLarge.getBoxAndDolly().stream().map(BoxAndDolly::getDolly).collect(Collectors.toList());
//验证Les任务 //验证Les任务
List<Les> lesList = validateLes(bindLarge.getSrcPositionCode(), boxNos); List<Les> lesList = validateLes(bindLarge.getSrcPositionCode(), boxNos);
List<Long> lesIds = lesList.stream().map(Les::getId).collect(Collectors.toList()); List<Long> lesIds = lesList.stream().map(Les::getId).collect(Collectors.toList());
@ -144,6 +144,91 @@ public class NioF3AppServiceImpl implements NioF3AppService {
kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskQYCJson(agvTask, boxNos.size(), dollyList)); kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskQYCJson(agvTask, boxNos.size(), dollyList));
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void bindLargeItemZyPicking(BindLargeZy bindLargeZy) {
//验证参数
validateParams(bindLargeZy);
//获取所有扫描的料箱号;
List<String> boxNos = bindLargeZy.getBoxList();
//验证Les任务
List<Les> lesList = validateLes(bindLargeZy.getSrcPositionCode(), boxNos);
List<Long> lesIds = lesList.stream().map(Les::getId).collect(Collectors.toList());
//验证料箱号
validateBoxNos(lesList, boxNos);
//获取目标点位
String beatCode = getBeatCode(lesList);
//获取物料
List<String> materialCodes = lesList.stream().map(Les::getMaterialCode).collect(Collectors.toList());
materialCodes = removeLastTwoCharsFromList(materialCodes);
Map<String, Item> itemMap = itemService.findByCodes(materialCodes);
//获取专用dolly
List<String> dollyList = new ArrayList<>();
for (Les les : lesList) {
String materialCode = removeLastTwoChars(les.getMaterialCode());
Item item = itemMap.get(materialCode);
if (item != null) {
dollyList.add(item.getSpecs());
} else {
dollyList.add("00000");
}
}
//创建任务
AgvTask agvTask = createAgvTask(bindLargeZy.getSrcPositionCode(), lesIds, beatCode);
//下发任务
kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskQYCJson(agvTask, boxNos.size(), dollyList));
}
/**
*
*
* @param str
* @return
*/
private String removeLastTwoChars(String str) {
return str.substring(0, str.length() - 2);
}
/**
*
*
* @param strings
* @return
*/
public List<String> removeLastTwoCharsFromList(List<String> strings) {
return strings.stream()
.map(this::removeLastTwoChars)
.collect(Collectors.toList());
}
/**
*
*
* @param bindLargeZy ->
*/
private void validateParams(BindLargeZy bindLargeZy) {
if (StringUtils.isEmpty(bindLargeZy.getSrcPositionCode())) {
throw new BadRequestException("起点必填");
}
if (bindLargeZy.getBoxList().isEmpty()) {
throw new BadRequestException("料箱未扫描绑定");
}
//验证起点
pointService.validatePoint(bindLargeZy.getSrcPositionCode());
}
public AgvTask createAgvTask(String srcPositionCode, List<Long> lesIds, String beatCode) { public AgvTask createAgvTask(String srcPositionCode, List<Long> lesIds, String beatCode) {
String lockKey = getLockKey(srcPositionCode); String lockKey = getLockKey(srcPositionCode);