From f1238319fb34ee78a88f5093291d78741967c387 Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Tue, 17 Jun 2025 16:09:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=93=E5=BA=93=E6=9D=83=E9=99=90=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BasWarehouseServiceImpl.java | 16 +-- .../mydojobdetail/domain/MydoJobDetail.java | 10 ++ .../domain/MydoJobDetailFinish.java | 117 ++++++++++-------- .../ruoyi/pda/controller/PdaController.java | 11 +- .../ruoyi/pda/domain/TrayCodeMakeSure.java | 22 ++++ .../com/ruoyi/pda/service/PdaService.java | 3 +- .../com/ruoyi/pda/service/PdaServiceImp.java | 66 ++++++++-- .../bas/warehouse/BasWarehouseMapper.xml | 49 ++++---- .../mapper/job/MydoJobDetailFinishMapper.xml | 2 + .../mapper/job/MydoJobDetailMapper.xml | 5 + .../ruoyi/common/annotation/DataScope.java | 7 +- .../framework/aspectj/DataScopeAspect.java | 30 ++++- .../service/impl/SysUserServiceImpl.java | 14 ++- 13 files changed, 238 insertions(+), 114 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/pda/domain/TrayCodeMakeSure.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/warehouse/service/impl/BasWarehouseServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/warehouse/service/impl/BasWarehouseServiceImpl.java index c18b961..96ba27d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/bas/warehouse/service/impl/BasWarehouseServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/warehouse/service/impl/BasWarehouseServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import com.ruoyi.bas.warehouse.domain.BasWarehouse; import com.ruoyi.bas.warehouse.mapper.BasWarehouseMapper; import com.ruoyi.bas.warehouse.service.IBasWarehouseService; +import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; @@ -51,21 +52,10 @@ public class BasWarehouseServiceImpl implements IBasWarehouseService * @return 仓库管理 */ @Override + @DataScope public List selectBasWarehouseList(BasWarehouse basWarehouse) { - List roles = sysRoleService.selectRolesByUserId(SecurityUtils.getUserId()); - if (roles.stream().anyMatch(SysRole::isAdmin)){ - return basWarehouseMapper.selectBasWarehouseList(basWarehouse); - }else { - List dateScope =new ArrayList<>(); - for (SysRole role : roles) { - if (CollUtil.isNotEmpty(role.getWarehouseDataScope())){ - dateScope.addAll(role.getWarehouseDataScope()); - } - } - basWarehouse.setDataScope(dateScope); - return basWarehouseMapper.selectBasWarehouseList(basWarehouse); - } + return basWarehouseMapper.selectBasWarehouseList(basWarehouse); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/domain/MydoJobDetail.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/domain/MydoJobDetail.java index 50a0668..ad56821 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/domain/MydoJobDetail.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/domain/MydoJobDetail.java @@ -121,9 +121,19 @@ public class MydoJobDetail extends BaseEntity private String spare4; private String status; + @Excel(name = "拣选数量") + private String pickQuantity; //额外字段 private ExtraField extraField; + public String getPickQuantity() { + return pickQuantity; + } + + public void setPickQuantity(String pickQuantity) { + this.pickQuantity = pickQuantity; + } + public ExtraField getExtraField() { return extraField; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetailfinish/domain/MydoJobDetailFinish.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetailfinish/domain/MydoJobDetailFinish.java index 4743faf..7dac3a2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetailfinish/domain/MydoJobDetailFinish.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetailfinish/domain/MydoJobDetailFinish.java @@ -7,7 +7,7 @@ import com.ruoyi.common.core.domain.BaseEntity; /** * 历史子作业对象 mydo_job_detail_finish - * + * * @author ruoyi * @date 2025-05-23 */ @@ -118,263 +118,274 @@ public class MydoJobDetailFinish extends BaseEntity /** 备用字段4 */ @Excel(name = "备用字段4") private String spare4; + @Excel(name = "拣选数量") + private String pickQuantity; - public void setJobDetailId(String jobDetailId) + public String getPickQuantity() { + return pickQuantity; + } + + public void setPickQuantity(String pickQuantity) { + this.pickQuantity = pickQuantity; + } + + + public void setJobDetailId(String jobDetailId) { this.jobDetailId = jobDetailId; } - public String getJobDetailId() + public String getJobDetailId() { return jobDetailId; } - public void setJobId(String jobId) + public void setJobId(String jobId) { this.jobId = jobId; } - public String getJobId() + public String getJobId() { return jobId; } - public void setStockId(String stockId) + public void setStockId(String stockId) { this.stockId = stockId; } - public String getStockId() + public String getStockId() { return stockId; } - public void setLotNo(String lotNo) + public void setLotNo(String lotNo) { this.lotNo = lotNo; } - public String getLotNo() + public String getLotNo() { return lotNo; } - public void setInDate(String inDate) + public void setInDate(String inDate) { this.inDate = inDate; } - public String getInDate() + public String getInDate() { return inDate; } - public void setInOrOutId(String inOrOutId) + public void setInOrOutId(String inOrOutId) { this.inOrOutId = inOrOutId; } - public String getInOrOutId() + public String getInOrOutId() { return inOrOutId; } - public void setInOrOutDId(String inOrOutDId) + public void setInOrOutDId(String inOrOutDId) { this.inOrOutDId = inOrOutDId; } - public String getInOrOutDId() + public String getInOrOutDId() { return inOrOutDId; } - public void setProductGuid(String productGuid) + public void setProductGuid(String productGuid) { this.productGuid = productGuid; } - public String getProductGuid() + public String getProductGuid() { return productGuid; } - public void setProductId(String productId) + public void setProductId(String productId) { this.productId = productId; } - public String getProductId() + public String getProductId() { return productId; } - public void setStockStatus(String stockStatus) + public void setStockStatus(String stockStatus) { this.stockStatus = stockStatus; } - public String getStockStatus() + public String getStockStatus() { return stockStatus; } - public void setInQuantity(String inQuantity) + public void setInQuantity(String inQuantity) { this.inQuantity = inQuantity; } - public String getInQuantity() + public String getInQuantity() { return inQuantity; } - public void setStockQuantity(String stockQuantity) + public void setStockQuantity(String stockQuantity) { this.stockQuantity = stockQuantity; } - public String getStockQuantity() + public String getStockQuantity() { return stockQuantity; } - public void setOutQuantity(String outQuantity) + public void setOutQuantity(String outQuantity) { this.outQuantity = outQuantity; } - public String getOutQuantity() + public String getOutQuantity() { return outQuantity; } - public void setLayerQuantity(String layerQuantity) + public void setLayerQuantity(String layerQuantity) { this.layerQuantity = layerQuantity; } - public String getLayerQuantity() + public String getLayerQuantity() { return layerQuantity; } - public void setOutLayerQuantity(String outLayerQuantity) + public void setOutLayerQuantity(String outLayerQuantity) { this.outLayerQuantity = outLayerQuantity; } - public String getOutLayerQuantity() + public String getOutLayerQuantity() { return outLayerQuantity; } - public void setGiveNum(String giveNum) + public void setGiveNum(String giveNum) { this.giveNum = giveNum; } - public String getGiveNum() + public String getGiveNum() { return giveNum; } - public void setStockinId(String stockinId) + public void setStockinId(String stockinId) { this.stockinId = stockinId; } - public String getStockinId() + public String getStockinId() { return stockinId; } - public void setStackingId(String stackingId) + public void setStackingId(String stackingId) { this.stackingId = stackingId; } - public String getStackingId() + public String getStackingId() { return stackingId; } - public void setExitId(String exitId) + public void setExitId(String exitId) { this.exitId = exitId; } - public String getExitId() + public String getExitId() { return exitId; } - public void setPrintDate(String printDate) + public void setPrintDate(String printDate) { this.printDate = printDate; } - public String getPrintDate() + public String getPrintDate() { return printDate; } - public void setCustomerId(String customerId) + public void setCustomerId(String customerId) { this.customerId = customerId; } - public String getCustomerId() + public String getCustomerId() { return customerId; } - public void setSupplierId(String supplierId) + public void setSupplierId(String supplierId) { this.supplierId = supplierId; } - public String getSupplierId() + public String getSupplierId() { return supplierId; } - public void setSpare1(String spare1) + public void setSpare1(String spare1) { this.spare1 = spare1; } - public String getSpare1() + public String getSpare1() { return spare1; } - public void setSpare2(String spare2) + public void setSpare2(String spare2) { this.spare2 = spare2; } - public String getSpare2() + public String getSpare2() { return spare2; } - public void setSpare3(String spare3) + public void setSpare3(String spare3) { this.spare3 = spare3; } - public String getSpare3() + public String getSpare3() { return spare3; } - public void setSpare4(String spare4) + public void setSpare4(String spare4) { this.spare4 = spare4; } - public String getSpare4() + public String getSpare4() { return spare4; } 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 0118fdc..7cc4c9f 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 @@ -11,12 +11,14 @@ 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.pda.domain.TrayCodeMakeSure; import com.ruoyi.pda.domain.TrayCodeMsg; import com.ruoyi.pda.service.PdaService; import com.ruoyi.pda.trayMsg.domain.TrayMsg; import com.ruoyi.pda.trayMsg.service.ITrayMsgService; import com.ruoyi.stock.stock.domain.BasStock; import com.ruoyi.stock.stock.service.IBasStockService; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -134,6 +136,7 @@ public class PdaController extends BaseController { /** * 绑定托盘物料 */ + @PreAuthorize("@ss.hasAnyPermi('bas:warehouse:list')") @RequestMapping("/bindTrayMsg") @ResponseBody public AjaxResult bindTrayMsg(@RequestBody TrayCodeMsg trayCodeMsg) { @@ -170,13 +173,13 @@ public class PdaController extends BaseController { /** * 出库确认 - * @param trayCode 托盘码 + * @param trayCodeMakeSure 托盘信息 * @return */ - @GetMapping("/outMakeSure") + @PostMapping("/outMakeSure") @ResponseBody - public AjaxResult outMakeSure(String trayCode) { - return pdaService.outMakeSure(trayCode); + public AjaxResult outMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { + return pdaService.outMakeSure(trayCodeMakeSure); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/domain/TrayCodeMakeSure.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/domain/TrayCodeMakeSure.java new file mode 100644 index 0000000..8d5498c --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/domain/TrayCodeMakeSure.java @@ -0,0 +1,22 @@ +package com.ruoyi.pda.domain; + +import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class TrayCodeMakeSure { + //托盘码 + private String trayCode; + //容器码 + private String containerCode; + //拣选列表 + private List mydoJobDetailList; +} 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 eb71323..ad9f5df 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 @@ -1,6 +1,7 @@ package com.ruoyi.pda.service; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.pda.domain.TrayCodeMakeSure; import com.ruoyi.pda.domain.TrayCodeMsg; import org.apache.poi.ss.formula.functions.T; import org.aspectj.weaver.loadtime.Aj; @@ -22,5 +23,5 @@ public interface PdaService { public AjaxResult addInJob(TrayCodeMsg trayCodeMsg); - AjaxResult outMakeSure(String trayCode); + AjaxResult outMakeSure(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 5ef1138..52c29dd 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 @@ -1,15 +1,21 @@ package com.ruoyi.pda.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace; import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService; import com.ruoyi.common.core.domain.AjaxResult; +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.common.core.domain.entity.SysRole; 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.pda.domain.TrayCodeMakeSure; import com.ruoyi.pda.domain.TrayCodeMsg; import com.ruoyi.pda.mapper.PdaMapper; import com.ruoyi.pda.trayMsg.domain.TrayMsg; @@ -17,7 +23,9 @@ import com.ruoyi.pda.trayMsg.service.ITrayMsgService; import com.ruoyi.system.service.ISysRoleService; import org.springframework.beans.factory.annotation.Autowired; 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; @@ -26,9 +34,14 @@ import java.util.List; @Service public class PdaServiceImp implements PdaService{ @Autowired - PdaMapper pdaMapper; + private PdaMapper pdaMapper; @Autowired - IBasCargoSpaceService basCargoSpaceService; + private IBasCargoSpaceService basCargoSpaceService; + @Autowired + private IMydoJobDetailService mydoJobDetailService;; + + @Autowired + private IMydoJobService mydoJobService;; @Autowired ISysRoleService sysRoleService; @Autowired @@ -167,15 +180,46 @@ public class PdaServiceImp implements PdaService{ } @Override - public AjaxResult outMakeSure(String trayCode) { - HashMap map = new HashMap<>(); - map.put("v_tray_code", trayCode); - pdaMapper.outMakeSure(map); - String result = map.get("v_result").toString(); - if("10".equals(result)){ - return AjaxResult.success(map.get("v_resultmsg").toString()); - }else{ - return AjaxResult.warn(map.get("v_resultmsg").toString()); + @Transactional(rollbackFor = Exception.class) + public AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure) { + //修改拣选数量 + List mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList(); + for (MydoJobDetail mydoJobDetail : mydoJobDetailList) { + MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId()); + BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity()); + BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity()); + mydoJobDetail.setPickQuantity(oldPickQuantity.add(newPickQuantity).toString()); + mydoJobDetailService.updateMydoJobDetail(mydoJobDetail); + } + + //查询当前任务是否已经全部拣选完成 + MydoJob mydoJobParam = new MydoJob(); + mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode()); + List mydoJobList = mydoJobService.selectMydoJobList(mydoJobParam); + if (CollUtil.isEmpty(mydoJobList)){ + return AjaxResult.warn("任务不存在"); + } + + MydoJobDetail mydoJobDetailParam = new MydoJobDetail(); + mydoJobDetailParam.setJobId(mydoJobList.get(0).getJobId()); + List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam); + if (CollUtil.isEmpty(mydoJobDetails)){ + return AjaxResult.warn("子任务不存在"); + } + + boolean flag = mydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity())); + if (flag){ + HashMap map = new HashMap<>(); + map.put("v_tray_code", trayCodeMakeSure.getTrayCode()); + pdaMapper.outMakeSure(map); + String result = map.get("v_result").toString(); + if("10".equals(result)){ + return AjaxResult.success(map.get("v_resultmsg").toString()); + }else{ + return AjaxResult.warn(map.get("v_resultmsg").toString()); + } + }else { + return AjaxResult.warn("拣选完成"); } } } diff --git a/ruoyi-admin/src/main/resources/mapper/bas/warehouse/BasWarehouseMapper.xml b/ruoyi-admin/src/main/resources/mapper/bas/warehouse/BasWarehouseMapper.xml index 7e8ba0f..dcae16b 100644 --- a/ruoyi-admin/src/main/resources/mapper/bas/warehouse/BasWarehouseMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/bas/warehouse/BasWarehouseMapper.xml @@ -22,29 +22,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"