| | |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto; |
| | | import com.vincent.rsf.server.api.controller.erp.params.TaskInParam; |
| | | import com.vincent.rsf.server.api.entity.params.ExMsgParams; |
| | | import com.vincent.rsf.server.api.entity.params.WcsTaskParams; |
| | | import com.vincent.rsf.server.common.annotation.OperationLog; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.controller.params.LocToTaskParams; |
| | | import com.vincent.rsf.server.manager.entity.Loc; |
| | | import com.vincent.rsf.server.manager.enums.LocStsType; |
| | | import com.vincent.rsf.server.manager.enums.TaskType; |
| | | import com.vincent.rsf.server.manager.service.LocItemService; |
| | | import com.vincent.rsf.server.manager.service.LocService; |
| | | import com.vincent.rsf.server.api.service.WcsService; |
| | | import com.vincent.rsf.server.common.constant.Constants; |
| | | import com.vincent.rsf.server.system.controller.BaseController; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.Map; |
| | | |
| | | @RestController |
| | | @RequestMapping("/wcs") |
| | |
| | | |
| | | @Autowired |
| | | private WcsService wcsService; |
| | | @Autowired |
| | | private LocItemService locItemService; |
| | | @Autowired |
| | | private LocService locService; |
| | | |
| | | // @Autowired |
| | | // private WmsRcsService wmsRcsService; |
| | | |
| | | @ApiOperation("空板库位列表(分页),仅返回 useStatus=D 的库位,用于空板出库页勾选") |
| | | @PreAuthorize("hasAuthority('manager:emptyOutbound:list')") |
| | | @PostMapping("/empty/locs/page") |
| | | public R emptyLocsPage(@RequestBody Map<String, Object> map) { |
| | | BaseParam baseParam = buildParam(map, BaseParam.class); |
| | | PageParam<Loc, BaseParam> pageParam = new PageParam<>(baseParam, Loc.class); |
| | | LambdaQueryWrapper<Loc> qw = new LambdaQueryWrapper<Loc>() |
| | | .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type) |
| | | .orderByAsc(Loc::getId); |
| | | return R.ok().add(locService.page(pageParam, qw)); |
| | | } |
| | | |
| | | @ApiOperation(value = "wcs生成入库任务接口") |
| | | @PostMapping("/create/in/task") |
| | |
| | | } |
| | | InTaskMsgDto msgDto = wcsService.createInTask(param); |
| | | return R.ok(msgDto); |
| | | |
| | | |
| | | } |
| | | |
| | | @ApiOperation(value = "agv取货完成接口") |
| | |
| | | |
| | | /** |
| | | * 接收WCS调度,回传执行状态 |
| | | * //TODO 1. 拣料出库,再入库执行,修改状态为199.任务完成 并记录入库站点(源站点),添加任务号参数 |
| | | * |
| | | * TODO 1. 拣料出库,再入库执行,修改状态为199.任务完成 并记录入库站点(源站点),添加任务号参数 |
| | | * @param param |
| | | * @return |
| | | */ |
| | |
| | | if (Cools.isEmpty(param)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @author Ryan |
| | |
| | | @OperationLog("RCS库位信息同步") |
| | | @PostMapping("/sync/locs") |
| | | public R syncLocsToWms() { |
| | | |
| | | return R.ok(); |
| | | // return wmsRcsService.syncLocs(); |
| | | wcsService.syncLocsToWms(); |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 下发任务至WCS,API中转 |
| | | * @param |
| | | * @return |
| | | */ |
| | | @ApiOperation("下发任务至WCS") |
| | | @OperationLog("下发任务至WCS") |
| | | @PostMapping("/pub/task/wcs") |
| | | public R pubTaskToWcs(@RequestBody WcsTaskParams params) { |
| | | return wcsService.pubWcsTask(params); |
| | | } |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @date 2025/8/28 |
| | | * @description: RCS上报异常信息 |
| | | * @version 1.0 |
| | | */ |
| | | @ApiOperation("RCS上报异常执行信息") |
| | | @OperationLog("RCS上报异常执行信息") |
| | | @PostMapping("/receive/ex/msg") |
| | | public R receiveExMsg(@RequestBody ExMsgParams params) { |
| | | return wcsService.receiveExMsg(params); |
| | | } |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @date 2026/2/6 |
| | | * @description: 申请入库任务,分配库位 |
| | | * @version 1.0 |
| | | */ |
| | | @ApiOperation("申请入库任务,分配库位") |
| | | @PostMapping("/allocate/location") |
| | | public R allocateLocation(@RequestBody Map<String, Object> params) { |
| | | if (Cools.isEmpty(params)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | String barcode = (String) params.get("barcode"); |
| | | String staNo = (String) params.get("staNo"); |
| | | Integer type = params.get("type") != null ? Integer.valueOf(params.get("type").toString()) : null; |
| | | Boolean full = null; |
| | | if (params.get("full") != null) { |
| | | if (params.get("full") instanceof Boolean) { |
| | | full = (Boolean) params.get("full"); |
| | | } else { |
| | | full = Boolean.parseBoolean(params.get("full").toString()); |
| | | } |
| | | } |
| | | if (Cools.isEmpty(barcode)) { |
| | | return R.error("料箱码不能为空!!"); |
| | | } |
| | | if (Cools.isEmpty(staNo)) { |
| | | return R.error("入库站点不能为空!!"); |
| | | } |
| | | if (type == null) { |
| | | return R.error("入库类型不能为空!!"); |
| | | } |
| | | return wcsService.allocateLocation(barcode, staNo, type, full); |
| | | } |
| | | |
| | | @ApiOperation("空板出库:从指定空板库位生成出库任务至目标站点") |
| | | @PreAuthorize("hasAuthority('manager:emptyOutbound:list')") |
| | | @PostMapping("/empty/outbound") |
| | | public R emptyOutbound(@RequestBody Map<String, Object> params) { |
| | | if (Cools.isEmpty(params)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | String staNo = (String) params.get("staNo"); |
| | | String orgLoc = (String) params.get("orgLoc"); |
| | | if (Cools.isEmpty(staNo)) { |
| | | return R.error("目标站点 staNo 不能为空!!"); |
| | | } |
| | | if (Cools.isEmpty(orgLoc)) { |
| | | return R.error("源库位 orgLoc 不能为空!!"); |
| | | } |
| | | LocToTaskParams map = new LocToTaskParams(); |
| | | map.setSiteNo(staNo); |
| | | map.setOrgLoc(orgLoc); |
| | | map.setType(Constants.TASK_TYPE_OUT_STOCK_EMPTY); |
| | | Long userId = getLoginUserId(); |
| | | if (userId == null) { |
| | | userId = 1L; |
| | | } |
| | | return R.ok("空板出库任务创建成功").add(locItemService.generateTaskEmpty(map, userId)); |
| | | } |
| | | |
| | | |
| | | } |