From 1c444e5282f8ea8647726df646b325b4cffac30c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=80=A1=E8=93=89?= <377046077@qq.com> Date: Wed, 16 Jul 2025 08:50:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E6=8C=81=E6=9C=BA=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OutMydoJobController.java | 8 + .../job/mydojob/mapper/MydoJobMapper.java | 5 + .../job/mydojob/service/IMydoJobService.java | 2 + .../service/impl/MydoJobServiceImpl.java | 21 + .../ruoyi/kpi/controller/KpiController.java | 6 +- .../com/ruoyi/kpi/service/KpiService.java | 2 + .../kpi/service/impl/KpiServiceImpl.java | 10 +- .../ruoyi/pda/controller/PdaController.java | 16 + .../com/ruoyi/pda/service/PdaService.java | 5 + .../com/ruoyi/pda/service/PdaServiceImp.java | 74 ++- .../resources/mapper/job/MydoJobMapper.xml | 9 + .../mapper/out/OutExceptionRecordMapper.xml | 2 +- ruoyi-ui/src/api/job/OutmydoJob.js | 10 + ruoyi-ui/src/lang/zh.js | 3 +- ruoyi-ui/src/views/stock/pointOut.vue | 575 ++++++++++++++++++ ruoyi-ui/vue.config.js | 2 +- 16 files changed, 730 insertions(+), 20 deletions(-) create mode 100644 ruoyi-ui/src/views/stock/pointOut.vue diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/controller/OutMydoJobController.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/controller/OutMydoJobController.java index ce1ffe2..130665e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/controller/OutMydoJobController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/controller/OutMydoJobController.java @@ -70,5 +70,13 @@ public class OutMydoJobController extends BaseController { return mydoJobService.OuthandInvalidation(jobIds); } + @PreAuthorize("@ss.hasPermi('job:outmydoJob:pointOut')") + @Log(title = "指定货位出库", businessType = BusinessType.INSERT) + @RequestMapping("/pointOut") + public AjaxResult pointOut(@RequestParam("stockIds")String[] stockIds) + { + return mydoJobService.pointOut(stockIds); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java index 95468aa..e4d6e53 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java @@ -1,6 +1,9 @@ package com.ruoyi.job.mydojob.mapper; +import java.util.HashMap; import java.util.List; +import java.util.Map; + import com.ruoyi.job.mydojob.domain.MydoJob; /** @@ -66,4 +69,6 @@ public interface MydoJobMapper public int deleteMydoJobByJobIds(String[] jobIds); void insertHistory(String jobId); + + void pointOut(HashMap map); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/IMydoJobService.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/IMydoJobService.java index 6744ca0..b25e626 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/IMydoJobService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/IMydoJobService.java @@ -83,4 +83,6 @@ public interface IMydoJobService * 出库手动作废 */ AjaxResult OuthandInvalidation(String [] jobIds); + + AjaxResult pointOut(String [] stockIds); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java index 575e343..3501d86 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.job.mydojob.service.impl; import java.math.BigDecimal; +import java.util.*; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -353,4 +354,24 @@ public class MydoJobServiceImpl implements IMydoJobService { return AjaxResult.error("任务处理异常"); } } + + @Override + public AjaxResult pointOut(String[] stockIds) { + HashMap map = new HashMap<>(); + String msg = ""; + String Stringbuilder = ""; + for(String stockId:stockIds){ + map.put("stockId",stockId); + mydoJobMapper.pointOut(map); + String result = map.get("result").toString(); + if("10".equals(result)){ + msg="操作成功!"; + }else{ + msg=map.get("v_resultmsg").toString(); + } + Stringbuilder+=stockId+msg+"
"; + } + + return AjaxResult.success(Stringbuilder.toString()); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/kpi/controller/KpiController.java b/ruoyi-admin/src/main/java/com/ruoyi/kpi/controller/KpiController.java index 4f334bd..189e930 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/kpi/controller/KpiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/kpi/controller/KpiController.java @@ -4,10 +4,7 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.kpi.service.KpiService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * KPI 统计分析 @@ -128,4 +125,5 @@ public class KpiController extends BaseController { @RequestParam("thePlatoon") String thePlatoon){ return success(kpiService.getChartMag(warehouseId,theColumn,theFloor,thePlatoon)); } + } \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/KpiService.java b/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/KpiService.java index a2bfbf6..41444e6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/KpiService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/KpiService.java @@ -42,4 +42,6 @@ public interface KpiService { Map getChartData(String warehouseId, String roadwayId, String thePlatoon); Map getChartMag(String warehouseId, String theColumn, String theFloor, String thePlatoon); + + } \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/impl/KpiServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/impl/KpiServiceImpl.java index c056815..9f6a4d7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/impl/KpiServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/impl/KpiServiceImpl.java @@ -1,6 +1,6 @@ package com.ruoyi.kpi.service.impl; -import java.util.List; +import java.util.*; import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace; import com.ruoyi.bas.cargoSpace.mapper.BasCargoSpaceMapper; @@ -9,13 +9,6 @@ import com.ruoyi.job.mydojobfinish.mapper.MydoJobFinishMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; - import com.ruoyi.kpi.service.KpiService; /** @@ -448,7 +441,6 @@ public class KpiServiceImpl implements KpiService return response; } - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/controller/PdaController.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/controller/PdaController.java index 57cad65..75c6791 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pda/controller/PdaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/controller/PdaController.java @@ -405,6 +405,14 @@ public class PdaController extends BaseController { return pdaService.agvRequest(basContainer); } + /** + * 手持机获取货位分析数据 + */ + @RequestMapping("/cargoSpaceAnalysis") + @ResponseBody + public AjaxResult cargoSpaceAnalysis(@RequestParam("warehouseId") String warehouseId){ + return success(pdaService.cargoSpaceAnalysis(warehouseId)); + } /** @@ -417,5 +425,13 @@ public class PdaController extends BaseController { public AjaxResult bindContainer(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { return pdaService.bindContainer(trayCodeMakeSure); } + /** + * 手持机获取入出库作业数量 + */ + @RequestMapping("/getAisleStatisticsData") + @ResponseBody + public AjaxResult getAisleStatisticsData(@RequestParam("warehouseId") String warehouseId){ + return success(pdaService.getAisleStatisticsData(warehouseId)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaService.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaService.java index e22991d..006767e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaService.java @@ -8,6 +8,7 @@ import org.apache.poi.ss.formula.functions.T; import org.aspectj.weaver.loadtime.Aj; import java.util.List; +import java.util.Map; public interface PdaService { @@ -36,5 +37,9 @@ public interface PdaService { AjaxResult agvRequest(BasContainer basContainer); + Map cargoSpaceAnalysis(String warehouseId); + + Map getAisleStatisticsData(String warehouseId); + AjaxResult bindContainer(TrayCodeMakeSure trayCodeMakeSure); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java index a93fdb6..8732174 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java @@ -22,6 +22,8 @@ import com.ruoyi.common.utils.SecurityUtils; 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.mydojobfinish.domain.MydoJobFinish; +import com.ruoyi.job.mydojobfinish.mapper.MydoJobFinishMapper; import com.ruoyi.out.outStockout.domain.OutStockout; import com.ruoyi.out.outStockout.service.IOutStockoutService; import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail; @@ -43,10 +45,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service @@ -81,6 +80,8 @@ public class PdaServiceImp implements PdaService { @Autowired private IBasStockService basStockService; @Autowired + private MydoJobFinishMapper mydoJobFinishMapper; + @Autowired private IOutPickSubmitService outPickSubmitService; @Autowired private ITagTaskService tagTaskService; @@ -533,6 +534,71 @@ public class PdaServiceImp implements PdaService { return null; } + + @Override + public Map cargoSpaceAnalysis(String warehouseId) { + BasCargoSpace queryParams = new BasCargoSpace(); + queryParams.setWarehouseId(warehouseId); + List list = basCargoSpaceService.selectBasCargoSpaceList(queryParams); + + // 初始化所有可能的状态,默认值为0 + Map statusCount = new LinkedHashMap<>(); + statusCount.put("空货位", 0); + statusCount.put("满货位", 0); + statusCount.put("入库分配", 0); + statusCount.put("出库分配", 0); + statusCount.put("入库需盘点", 0); + statusCount.put("出库需盘点", 0); + + // 统计实际存在的状态数量 + for (BasCargoSpace space : list) { + if (space.getStatus() != null) { + String statusName; + switch (Integer.parseInt(space.getStatus())) { + case 1: statusName = "空货位"; break; + case 2: statusName = "满货位"; break; + case 3: statusName = "入库分配"; break; + case 4: statusName = "出库分配"; break; + case 5: statusName = "入库需盘点"; break; + case 6: statusName = "出库需盘点"; break; + default: continue; + } + statusCount.put(statusName, statusCount.getOrDefault(statusName, 0) + 1); + } + } + + // 转换为要求的格式 + List> result = new ArrayList<>(); + for (Map.Entry entry : statusCount.entrySet()) { + Map item = new HashMap<>(); + item.put("name", entry.getKey()); + item.put("value", entry.getValue()); + result.add(item); + } + + Map response = new HashMap<>(); + response.put("data", result); + return response; + } + + @Override + public Map getAisleStatisticsData(String warehouseId) { + Map map = new HashMap<>(); + MydoJob mydoJob = new MydoJob(); + mydoJob.setWarehouseId(warehouseId); + mydoJob.setInOut("1"); + List mydoJobs = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJob); + + MydoJob mydoJob1 = new MydoJob(); + mydoJob1.setWarehouseId(warehouseId); + mydoJob1.setInOut("2"); + List mydoJobs1 = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJob1); + + map.put("in",mydoJobs.size()); + map.put("out",mydoJobs1.size()); + return map; + } + @Override public AjaxResult bindContainer(TrayCodeMakeSure trayCodeMakeSure) { if (CollUtil.isEmpty(trayCodeMakeSure.getMydoJobDetailList())){ diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index 18f4b12..738b3a1 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -207,4 +207,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where mj.status = '3' + + diff --git a/ruoyi-admin/src/main/resources/mapper/out/OutExceptionRecordMapper.xml b/ruoyi-admin/src/main/resources/mapper/out/OutExceptionRecordMapper.xml index a005529..9e432c3 100644 --- a/ruoyi-admin/src/main/resources/mapper/out/OutExceptionRecordMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/out/OutExceptionRecordMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-ui/src/api/job/OutmydoJob.js b/ruoyi-ui/src/api/job/OutmydoJob.js index 04bf57a..97030a6 100644 --- a/ruoyi-ui/src/api/job/OutmydoJob.js +++ b/ruoyi-ui/src/api/job/OutmydoJob.js @@ -27,3 +27,13 @@ export function hangInvalidJob(jobIds) { params: { jobIds: jobIds } }) } + +export function pointOut(stockIds) { + return request({ + url: '/job/outmydoJob/pointOut', + method: 'get', + params: { + stockIds: stockIds.join(',') // 将数组转换为逗号分隔的字符串 + } + }) +} diff --git a/ruoyi-ui/src/lang/zh.js b/ruoyi-ui/src/lang/zh.js index 6206bf1..31c84ed 100644 --- a/ruoyi-ui/src/lang/zh.js +++ b/ruoyi-ui/src/lang/zh.js @@ -677,7 +677,8 @@ export default { productId:'物料编码', cargoSpaceStatus: '锁定状态', cargoSpaceStockStatus: '货位状态', - deleteConfirm:"删除库存" + deleteConfirm:"删除库存", + designatedStorageLocationForOutboundShipment:"指定货位出库" }, diff --git a/ruoyi-ui/src/views/stock/pointOut.vue b/ruoyi-ui/src/views/stock/pointOut.vue new file mode 100644 index 0000000..5926d76 --- /dev/null +++ b/ruoyi-ui/src/views/stock/pointOut.vue @@ -0,0 +1,575 @@ + + + + + diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index 40e140d..f483b3c 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -9,7 +9,7 @@ const CompressionPlugin = require('compression-webpack-plugin') const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 -const baseUrl = 'http://localhost:8080' // 后端接口 +const baseUrl = 'http://localhost:8081' // 后端接口 const port = process.env.port || process.env.npm_config_port || 80 // 端口