手持机部分

This commit is contained in:
张怡蓉
2025-06-24 08:42:50 +08:00
parent 3add052259
commit a1e17f572c
21 changed files with 313 additions and 111 deletions

View File

@@ -1,6 +1,7 @@
package com.ruoyi.pda.controller;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
import com.ruoyi.bas.warehouse.service.IBasWarehouseService;
@@ -11,6 +12,10 @@ import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.service.IInStockinService;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService;
import com.ruoyi.pda.domain.TrayCodeMakeSure;
import com.ruoyi.pda.domain.TrayCodeMsg;
import com.ruoyi.pda.service.PdaService;
@@ -23,6 +28,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -42,9 +48,16 @@ public class PdaController extends BaseController {
private IBasWarehouseService basWarehouseService;
@Autowired
private ITrayMsgService trayMsgService;
@Autowired
private IBasCargoSpaceService basCargoSpaceService;
@Autowired
private IMydoJobService mydoJobService;
@Autowired
private IMydoJobDetailService mydoJobDetailService;
/**
* 空托盘入库
*
* @param trayCodeMsg
* @return
*/
@@ -52,87 +65,121 @@ public class PdaController extends BaseController {
@ResponseBody
public AjaxResult emptyTrayIn(@RequestBody TrayCodeMsg trayCodeMsg) {
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
if(basWarehouse==null){
if (basWarehouse == null) {
return AjaxResult.error("仓库不存在");
}else{
if("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())){
return AjaxResult.error("请选择高架库货位");
}
}
if ("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())) {
return AjaxResult.error("请选择高架库货位");
}
if ("2".equals(basWarehouse.getWarehouseType())) {
BasCargoSpace basCargoSpace = new BasCargoSpace();
basCargoSpace.setWarehouseId(trayCodeMsg.getWarehouseId());
basCargoSpace.setStatus("1");
List<BasCargoSpace> basCargoSpaces = basCargoSpaceService.selectBasCargoSpaceList(basCargoSpace);
if (basCargoSpaces.size() == 0) {
return AjaxResult.error("此仓库没有空余货位");
} else {
trayCodeMsg.setCargoSpaceId(basCargoSpaces.get(0).getCargoSpaceId());
}
}
return pdaService.emptyTrayIn(trayCodeMsg);
}
/**
* 空料箱入库
*/
@RequestMapping("/emptyBoxIn")
@ResponseBody
public AjaxResult emptyBoxIn(@RequestBody TrayCodeMsg trayCodeMsg) {
AjaxResult ajaxResult = pdaService.emptyBoxIn(trayCodeMsg);
return ajaxResult;
}
// /**
// * 空料箱入库
// */
// @RequestMapping("/emptyBoxIn")
// @ResponseBody
// public AjaxResult emptyBoxIn(@RequestBody TrayCodeMsg trayCodeMsg) {
// AjaxResult ajaxResult = pdaService.emptyBoxIn(trayCodeMsg);
// return ajaxResult;
// }
/**
* 空托盘库存查询
*
* @param warehouseId
* @return
*/
@PreAuthorize("@ss.hasPermi('pda:selectKTPStcok:list')")
@RequestMapping("/selectKTPStcok")
@ResponseBody
public AjaxResult selectKTPStcok(String warehouseId) {
List<BasStock> basStockList = basStockService.selectKtpStock(warehouseId);
BasStock basStock = new BasStock();
basStock.setWarehouseId(warehouseId);
List<BasStock> basStockList = basStockService.selectKtpStock(basStock);
if (basStockList.size() != 0) {
return AjaxResult.success(basStockList);
}else{
return AjaxResult.error("此区域没有空托盘库存");
return AjaxResult.success(basStockList);
} else {
return AjaxResult.error("此区域没有空托盘库存");
}
}
/**
* 空托盘出库
*
* @param
* @return
*/
@RequestMapping("/emptyTrayOut")
@ResponseBody
public AjaxResult emptyTrayOut(@RequestBody TrayCodeMsg trayCodeMsg ) {
public AjaxResult emptyTrayOut(@RequestBody TrayCodeMsg trayCodeMsg) {
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
if (basWarehouse == null){
if (basWarehouse == null) {
return AjaxResult.error("仓库不存在");
}else{
if("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())){
return AjaxResult.error("请选择高架库货位");
}
if ("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())) {
return AjaxResult.error("请选择高架库货位");
}
if ("2".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getExitId())) {
return AjaxResult.error("请选择出口");
}
if("2".equals(basWarehouse.getWarehouseType())){
BasStock basStock = new BasStock();
basStock.setWarehouseId(trayCodeMsg.getWarehouseId());
List<BasStock> basStockList = basStockService.selectKtpStock(basStock);
if(basStockList.size() == 0){
return AjaxResult.error("此区域没有空托盘库存或此用户没有该区域权限");
}else{
trayCodeMsg.setCargoSpaceId(basStockList.get(0).getCargoSpaceId());
}
}
return pdaService.emptyTrayOut(trayCodeMsg);
}
/**
* 空料箱出库
* @param trayCodeMsg
* @return
*/
@RequestMapping("/emptyBoxOut")
@ResponseBody
public AjaxResult emptyBoxOut(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.emptyBoxOut(trayCodeMsg);
}
// /**
// * 空料箱出库
// *
// * @param trayCodeMsg
// * @return
// */
// @RequestMapping("/emptyBoxOut")
// @ResponseBody
// public AjaxResult emptyBoxOut(@RequestBody TrayCodeMsg trayCodeMsg) {
// return pdaService.emptyBoxOut(trayCodeMsg);
// }
/**
* 绑盘查询入库单详情
*
* @param stockinDetailId
* @return
*/
@PreAuthorize("@ss.hasPermi('pda:inoderList:list')")
@RequestMapping("/inorder/detail")
@ResponseBody
public InStockinDetail inoderList(String stockinDetailId) {
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(stockinDetailId);
InStockinDetail inStockinDetail1 = new InStockinDetail();
inStockinDetail1.setStockinDetailId(stockinDetailId);
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(inStockinDetail1);
return inStockinDetail;
}
/**
* 绑定托盘物料
*/
@@ -155,6 +202,7 @@ public class PdaController extends BaseController {
List<TrayMsg> trayMsgs = trayMsgService.selectTrayMsgList(trayMsg);
return AjaxResult.success(trayMsgs);
}
/**
* 确认入库
*/
@@ -162,18 +210,30 @@ public class PdaController extends BaseController {
@ResponseBody
public AjaxResult addInJob(@RequestBody TrayCodeMsg trayCodeMsg) {
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
// if(basWarehouse==null){
// return AjaxResult.error("仓库不存在");
// }
if("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())){
if (basWarehouse == null) {
return AjaxResult.error("仓库不存在");
}
if ("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())) {
return AjaxResult.error("请选择高架库货位");
}
if ("2".equals(basWarehouse.getWarehouseType())) {
BasCargoSpace basCargoSpace = new BasCargoSpace();
basCargoSpace.setWarehouseId(trayCodeMsg.getWarehouseId());
basCargoSpace.setStatus("1");
List<BasCargoSpace> basCargoSpaces = basCargoSpaceService.selectBasCargoSpaceList(basCargoSpace);
if (basCargoSpaces.size() == 0) {
return AjaxResult.error("此仓库没有空余货位");
} else {
trayCodeMsg.setCargoSpaceId(basCargoSpaces.get(0).getCargoSpaceId());
}
}
return pdaService.addInJob(trayCodeMsg);
}
/**
* 出库确认
*
* @param trayCodeMakeSure 托盘信息
* @return
*/
@@ -193,5 +253,68 @@ public class PdaController extends BaseController {
public AjaxResult checkMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
return pdaService.checkMakeSure(trayCodeMakeSure);
}
/**
* 查询所有待处理任务
*/
@PreAuthorize("@ss.hasPermi('pda:taskList:list')")
@RequestMapping("/taskList")
@ResponseBody
public AjaxResult taskList(@RequestBody TrayCodeMsg trayCodeMsg) {
List<BasWarehouse> basWarehouses = basWarehouseService.selectBasWarehouseList(new BasWarehouse());
List<MydoJob> mydoJobArrayList = new ArrayList<>();
if(basWarehouses.size() != 0){
for(BasWarehouse basWarehouse : basWarehouses){
//高架库
if("1".equals(basWarehouse.getWarehouseType())){
MydoJob mydoJob = new MydoJob();
mydoJob.setWarehouseId(basWarehouse.getWarehouseId());
mydoJob.setCargoSpaceId(trayCodeMsg.getTrayCode());
mydoJob.setInOut(trayCodeMsg.getInOut());
mydoJob.setStatus("1");
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
//将mydoJob添加进mydoJobArrayList
mydoJobArrayList.addAll(mydoJobs);
}
//ctu库
if("2".equals(basWarehouse.getWarehouseType()) && !"1".equals(trayCodeMsg.getInOut())){
MydoJob mydoJob = new MydoJob();
mydoJob.setInOut("2");
mydoJob.setWarehouseId(basWarehouse.getWarehouseId());
mydoJob.setCargoSpaceId(trayCodeMsg.getTrayCode());
mydoJob.setStatus("3");
List<MydoJob> mydoJobs2 = mydoJobService.selectMydoJobList(mydoJob);
mydoJobArrayList.addAll(mydoJobs2);
}
}
}
return AjaxResult.success(mydoJobArrayList);
}
/**
* 用托盘条码查询子作业数据
*/
@RequestMapping("/selectDetailByTray")
@ResponseBody
public AjaxResult selectDetailByTray(@RequestBody TrayCodeMsg trayCodeMsg) {
MydoJob mydoJob = new MydoJob();
mydoJob.setTrayCode(trayCodeMsg.getTrayCode());
mydoJob.setStatus(trayCodeMsg.getStatus());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
if(mydoJobs.size() == 0){
return AjaxResult.error("此托盘没有作业");
}
MydoJobDetail mydoJobDetail = new MydoJobDetail();
mydoJobDetail.setJobId(mydoJobs.get(0).getJobId());
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetail);
return AjaxResult.success(mydoJobDetails);
}
}

View File

@@ -16,6 +16,25 @@ private String exitId;
private String stockinDetailId;
private String inOut;
private String status;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getInOut() {
return inOut;
}
public void setInOut(String inOut) {
this.inOut = inOut;
}
public String getStockinDetailId() {
return stockinDetailId;
}

View File

@@ -36,16 +36,18 @@ import java.util.HashMap;
import java.util.List;
@Service
public class PdaServiceImp implements PdaService{
public class PdaServiceImp implements PdaService {
@Autowired
private PdaMapper pdaMapper;
@Autowired
private IBasCargoSpaceService basCargoSpaceService;
@Autowired
private IMydoJobDetailService mydoJobDetailService;;
private IMydoJobDetailService mydoJobDetailService;
;
@Autowired
private IMydoJobService mydoJobService;;
private IMydoJobService mydoJobService;
;
@Autowired
ISysRoleService sysRoleService;
@Autowired
@@ -59,6 +61,7 @@ public class PdaServiceImp implements PdaService{
/**
* 空托盘入库
*
* @param trayCodeMsg
* @return
*/
@@ -71,9 +74,9 @@ public class PdaServiceImp implements PdaService{
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
pdaMapper.emptyTrayIn(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
} else {
return AjaxResult.error(map.get("v_resultmsg").toString());
}
@@ -81,6 +84,7 @@ public class PdaServiceImp implements PdaService{
/**
* 空料箱入库
*
* @param trayCodeMsg
* @return
*/
@@ -92,9 +96,9 @@ public class PdaServiceImp implements PdaService{
map.put("v_entrance_id", trayCodeMsg.getEntranceId());
pdaMapper.emptyBoxIn(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
} else {
return AjaxResult.error(map.get("v_resultmsg").toString());
}
@@ -105,11 +109,12 @@ public class PdaServiceImp implements PdaService{
HashMap<String, Object> map = new HashMap<>();
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
map.put("v_exit_id", trayCodeMsg.getExitId());
pdaMapper.emptyTrayOut(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}
@@ -122,9 +127,9 @@ public class PdaServiceImp implements PdaService{
map.put("v_exit_id", trayCodeMsg.getExitId());
pdaMapper.emptyBoxOut(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}
@@ -132,26 +137,19 @@ public class PdaServiceImp implements PdaService{
@Override
public AjaxResult bindTrayMsg(TrayCodeMsg trayCodeMsg) {
//判断用户的仓库权限
List<SysRole> roles = sysRoleService.selectRolesByUserId(SecurityUtils.getUserId());
if (!roles.stream().anyMatch(SysRole::isAdmin)){
for (SysRole role : roles) {
if (CollUtil.isNotEmpty(role.getWarehouseDataScope())){
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(trayCodeMsg.getStockinDetailId());
if(!role.getWarehouseDataScope().stream().anyMatch(warehouseId -> warehouseId.equals(inStockinDetail.getWarehouseId()))){
return AjaxResult.warn("此用户无权限操作该仓库物料");
}
}
}
InStockinDetail inStockinDetail1 = new InStockinDetail();
inStockinDetail1.setStockinDetailId(trayCodeMsg.getStockinDetailId());
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(inStockinDetail1);
if (inStockinDetail == null) {
return AjaxResult.warn("此用户无权限操作该仓库物料,或物料不存在");
}
//判断与已绑定物料是否为同一仓库
TrayMsg trayMsg = new TrayMsg();
trayMsg.setTrayCode(trayCodeMsg.getTrayCode());
List<TrayMsg> trayMsgs = trayMsgService.selectTrayMsgList(trayMsg);
if(trayMsgs.size()>0){
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(trayCodeMsg.getStockinDetailId());
if(!trayMsgs.get(0).getWarehouseId().equals(inStockinDetail.getWarehouseId())){
if (trayMsgs.size() > 0) {
// InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(trayCodeMsg.getStockinDetailId());
if (!trayMsgs.get(0).getWarehouseId().equals(inStockinDetail.getWarehouseId())) {
return AjaxResult.warn("同一托盘不能绑定不同仓库的物料");
}
}
@@ -160,12 +158,12 @@ public class PdaServiceImp implements PdaService{
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMsg.getTrayCode());
map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId());
map.put("v_quantity", Integer.parseInt(trayCodeMsg.getInQuantity()));
map.put("v_quantity", Integer.parseInt(trayCodeMsg.getInQuantity()));
pdaMapper.bindTrayMsg(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}
@@ -179,9 +177,9 @@ public class PdaServiceImp implements PdaService{
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
pdaMapper.addInJob(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
@@ -222,29 +220,29 @@ public class PdaServiceImp implements PdaService{
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode());
List<MydoJob> mydoJobList = mydoJobService.selectMydoJobList(mydoJobParam);
if (CollUtil.isEmpty(mydoJobList)){
if (CollUtil.isEmpty(mydoJobList)) {
return AjaxResult.warn("任务不存在");
}
MydoJobDetail mydoJobDetailParam = new MydoJobDetail();
mydoJobDetailParam.setJobId(mydoJobList.get(0).getJobId());
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
if (CollUtil.isEmpty(mydoJobDetails)){
if (CollUtil.isEmpty(mydoJobDetails)) {
return AjaxResult.warn("子任务不存在");
}
boolean flag = mydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity()));
if (flag){
if (flag) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
pdaMapper.outMakeSure(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}else {
} else {
return AjaxResult.warn("拣选完成");
}
}

View File

@@ -2,16 +2,12 @@ package com.ruoyi.pda.trayMsg.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -33,6 +29,8 @@ public class TrayMsgController extends BaseController
{
@Autowired
private ITrayMsgService trayMsgService;
@Autowired
private IInStockinDetailService inStockinDetailService;
/**
* 查询trayMsg列表
@@ -101,4 +99,24 @@ public class TrayMsgController extends BaseController
{
return toAjax(trayMsgService.deleteTrayMsgByIds(ids));
}
@PreAuthorize("@ss.hasPermi('pda:trayMsg:remove')")
@RequestMapping("/remove")
@Log(title = "trayMsg", businessType = BusinessType.DELETE)
public AjaxResult remove(@RequestBody TrayMsg trayMsg)
{
List<TrayMsg> list = trayMsgService.selectTrayMsgList(trayMsg);
int i = trayMsgService.deleteTrayMsgById(list.get(0).getId());
if(i>0){
// InStockinDetail inStockinDetail = new InStockinDetail();
// inStockinDetail.setStockinDetailId(trayMsg.getStockinDetailId());
InStockinDetail inStockinDetail1 = inStockinDetailService.selectInStockinDetailByStockinDetailId(trayMsg.getStockinDetailId());
Integer num=Integer.parseInt(inStockinDetail1.getScanNum())-Integer.parseInt(list.get(0).getQuantity());
inStockinDetail1.setScanNum(String.valueOf(num));
inStockinDetailService.updateInStockinDetail(inStockinDetail1);
}
return toAjax(i);
}
}

View File

@@ -1,6 +1,8 @@
package com.ruoyi.pda.trayMsg.service.impl;
import java.util.List;
import com.ruoyi.common.annotation.DataScope;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.pda.trayMsg.mapper.TrayMsgMapper;
@@ -38,6 +40,7 @@ public class TrayMsgServiceImpl implements ITrayMsgService
* @return trayMsg
*/
@Override
@DataScope(warehouseAlias = "w")
public List<TrayMsg> selectTrayMsgList(TrayMsg trayMsg)
{
return trayMsgMapper.selectTrayMsgList(trayMsg);
@@ -45,7 +48,6 @@ public class TrayMsgServiceImpl implements ITrayMsgService
/**
* 新增trayMsg
*
* @param trayMsg trayMsg
* @return 结果
*/