From f3cdc90443924e7aa8a2d886203bfda979b89976 Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Wed, 25 Jun 2025 17:57:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E8=B4=A7=E6=B5=81=E7=A8=8B=20=20?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=BC=82=E5=B8=B8=E6=B5=81=E7=A8=8B=20=20?= =?UTF-8?q?=E5=B9=B3=E5=BA=93=E7=9B=98=E7=82=B9=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/CheckDifferenceRecord.java | 64 +- .../CheckDifferenceRecordServiceImpl.java | 34 +- .../check/flat/FlatStockCheckController.java | 28 + .../service/impl/MydoJobServiceImpl.java | 7 +- .../service/impl/OutStockoutServiceImpl.java | 10 +- .../ruoyi/pda/controller/PdaController.java | 13 + .../com/ruoyi/pda/service/PdaService.java | 2 + .../com/ruoyi/pda/service/PdaServiceImp.java | 182 +++++- .../ruoyi/stock/stock/domain/BasStock.java | 12 + .../check/CheckDifferenceRecordMapper.xml | 12 +- .../resources/mapper/stock/BasStockMapper.xml | 6 + ruoyi-ui/src/views/check/flat/index.vue | 586 ++++++++++++++++++ 12 files changed, 881 insertions(+), 75 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/check/flat/FlatStockCheckController.java create mode 100644 ruoyi-ui/src/views/check/flat/index.vue diff --git a/ruoyi-admin/src/main/java/com/ruoyi/check/difference/domain/CheckDifferenceRecord.java b/ruoyi-admin/src/main/java/com/ruoyi/check/difference/domain/CheckDifferenceRecord.java index a10a627..349623f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/check/difference/domain/CheckDifferenceRecord.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/check/difference/domain/CheckDifferenceRecord.java @@ -7,7 +7,7 @@ import com.ruoyi.common.core.domain.BaseEntity; /** * 盘点差异对象 check_difference_record - * + * * @author ruoyi * @date 2025-05-28 */ @@ -66,132 +66,142 @@ public class CheckDifferenceRecord extends BaseEntity @Excel(name = "物料guid") private String productGuid; - public void setCheckGuid(String checkGuid) + private String status; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public void setCheckGuid(String checkGuid) { this.checkGuid = checkGuid; } - public String getCheckGuid() + public String getCheckGuid() { return checkGuid; } - public void setCheckStockDetailId(String checkStockDetailId) + public void setCheckStockDetailId(String checkStockDetailId) { this.checkStockDetailId = checkStockDetailId; } - public String getCheckStockDetailId() + public String getCheckStockDetailId() { return checkStockDetailId; } - public void setStockId(String stockId) + public void setStockId(String stockId) { this.stockId = stockId; } - public String getStockId() + public String getStockId() { return stockId; } - public void setTrayCode(String trayCode) + public void setTrayCode(String trayCode) { this.trayCode = trayCode; } - public String getTrayCode() + public String getTrayCode() { return trayCode; } - public void setCargoSpaceId(String cargoSpaceId) + public void setCargoSpaceId(String cargoSpaceId) { this.cargoSpaceId = cargoSpaceId; } - public String getCargoSpaceId() + public String getCargoSpaceId() { return cargoSpaceId; } - public void setProductId(String productId) + public void setProductId(String productId) { this.productId = productId; } - public String getProductId() + public String getProductId() { return productId; } - public void setLotNo(String lotNo) + public void setLotNo(String lotNo) { this.lotNo = lotNo; } - public String getLotNo() + public String getLotNo() { return lotNo; } - public void setSupplier(String supplier) + public void setSupplier(String supplier) { this.supplier = supplier; } - public String getSupplier() + public String getSupplier() { return supplier; } - public void setCustomer(String customer) + public void setCustomer(String customer) { this.customer = customer; } - public String getCustomer() + public String getCustomer() { return customer; } - public void setOldQuantity(String oldQuantity) + public void setOldQuantity(String oldQuantity) { this.oldQuantity = oldQuantity; } - public String getOldQuantity() + public String getOldQuantity() { return oldQuantity; } - public void setNewQuantity(String newQuantity) + public void setNewQuantity(String newQuantity) { this.newQuantity = newQuantity; } - public String getNewQuantity() + public String getNewQuantity() { return newQuantity; } - public void setRecordType(Long recordType) + public void setRecordType(Long recordType) { this.recordType = recordType; } - public Long getRecordType() + public Long getRecordType() { return recordType; } - public void setProductGuid(String productGuid) + public void setProductGuid(String productGuid) { this.productGuid = productGuid; } - public String getProductGuid() + public String getProductGuid() { return productGuid; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/check/difference/service/impl/CheckDifferenceRecordServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/check/difference/service/impl/CheckDifferenceRecordServiceImpl.java index ecaddce..5fd0dea 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/check/difference/service/impl/CheckDifferenceRecordServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/check/difference/service/impl/CheckDifferenceRecordServiceImpl.java @@ -1,7 +1,11 @@ package com.ruoyi.check.difference.service.impl; import java.util.List; + +import cn.hutool.core.util.IdUtil; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.stock.stock.domain.BasStock; +import com.ruoyi.stock.stock.service.IBasStockService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.check.difference.mapper.CheckDifferenceRecordMapper; @@ -10,19 +14,22 @@ import com.ruoyi.check.difference.service.ICheckDifferenceRecordService; /** * 盘点差异Service业务层处理 - * + * * @author ruoyi * @date 2025-05-28 */ @Service -public class CheckDifferenceRecordServiceImpl implements ICheckDifferenceRecordService +public class CheckDifferenceRecordServiceImpl implements ICheckDifferenceRecordService { @Autowired private CheckDifferenceRecordMapper checkDifferenceRecordMapper; + @Autowired + private IBasStockService basStockService; + /** * 查询盘点差异 - * + * * @param checkGuid 盘点差异主键 * @return 盘点差异 */ @@ -34,7 +41,7 @@ public class CheckDifferenceRecordServiceImpl implements ICheckDifferenceRecordS /** * 查询盘点差异列表 - * + * * @param checkDifferenceRecord 盘点差异 * @return 盘点差异 */ @@ -46,20 +53,31 @@ public class CheckDifferenceRecordServiceImpl implements ICheckDifferenceRecordS /** * 新增盘点差异 - * + * * @param checkDifferenceRecord 盘点差异 * @return 结果 */ @Override public int insertCheckDifferenceRecord(CheckDifferenceRecord checkDifferenceRecord) { + if (checkDifferenceRecord.getRecordType()==1){ + String stockId = checkDifferenceRecord.getStockId(); + BasStock basStock = basStockService.selectBasStockByStockId(stockId); + checkDifferenceRecord.setOldQuantity(basStock.getQuantity()); + }else if (checkDifferenceRecord.getRecordType()==2){ + checkDifferenceRecord.setOldQuantity("0"); + }else if (checkDifferenceRecord.getRecordType()==3){ + checkDifferenceRecord.setNewQuantity("0"); + } checkDifferenceRecord.setCreateTime(DateUtils.getNowDate()); + checkDifferenceRecord.setCheckGuid(IdUtil.fastSimpleUUID()); + checkDifferenceRecord.setStatus("0"); return checkDifferenceRecordMapper.insertCheckDifferenceRecord(checkDifferenceRecord); } /** * 修改盘点差异 - * + * * @param checkDifferenceRecord 盘点差异 * @return 结果 */ @@ -71,7 +89,7 @@ public class CheckDifferenceRecordServiceImpl implements ICheckDifferenceRecordS /** * 批量删除盘点差异 - * + * * @param checkGuids 需要删除的盘点差异主键 * @return 结果 */ @@ -83,7 +101,7 @@ public class CheckDifferenceRecordServiceImpl implements ICheckDifferenceRecordS /** * 删除盘点差异信息 - * + * * @param checkGuid 盘点差异主键 * @return 结果 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/check/flat/FlatStockCheckController.java b/ruoyi-admin/src/main/java/com/ruoyi/check/flat/FlatStockCheckController.java new file mode 100644 index 0000000..8eae54a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/check/flat/FlatStockCheckController.java @@ -0,0 +1,28 @@ +package com.ruoyi.check.flat; + +import com.ruoyi.check.difference.domain.CheckDifferenceRecord; +import com.ruoyi.check.difference.service.ICheckDifferenceRecordService; +import com.ruoyi.common.core.domain.AjaxResult; +import org.springframework.beans.factory.annotation.Autowired; +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; + +/** + * 平库盘点 + */ +@RestController +@RequestMapping("/check/flatStockCheck") +public class FlatStockCheckController { + + @Autowired + private ICheckDifferenceRecordService checkDifferenceRecordService; + + @PostMapping("/add") + public AjaxResult add(@RequestBody CheckDifferenceRecord checkDifferenceRecord) { + int i = checkDifferenceRecordService.insertCheckDifferenceRecord(checkDifferenceRecord); + return i > 0 ? AjaxResult.success(): AjaxResult.error(); + } + +} 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 5822aea..ded2185 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 @@ -183,16 +183,17 @@ public class MydoJobServiceImpl implements IMydoJobService { if (job == null) { return AjaxResult.warn("任务不存在"); } - if (job.getInOrOut().equals("5")){ + if ("5".equals(job.getInOrOut())){ //料箱盘点入库作业 //修改货位 BasCargoSpace basCargoSpace = new BasCargoSpace(); - basCargoSpace.setStatus("5"); + basCargoSpace.setStatus("7"); basCargoSpace.setTrayCode(job.getTrayCode()); basCargoSpace.setCargoSpaceId(job.getCargoSpaceId()); basCargoSpaceService.updateBasCargoSpace(basCargoSpace); - + //插入历史表 + insertHistory(mydoJob.getJobId()); return AjaxResult.success(); }else { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/service/impl/OutStockoutServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/service/impl/OutStockoutServiceImpl.java index 051880f..3751152 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/service/impl/OutStockoutServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/service/impl/OutStockoutServiceImpl.java @@ -161,10 +161,12 @@ public class OutStockoutServiceImpl implements IOutStockoutService outStockoutDetail.setStockoutId(stockoutId); List outStockoutDetails = outStockoutDetailService.selectOutStockoutDetailList(outStockoutDetail); for (OutStockoutDetail detail : outStockoutDetails) { - map.put("v_stockout_detail_id", detail.getStockoutDetailId()); - outStockoutMapper.autoAllot(map); - if (!"10".equals(map.get("v_result"))){ - stringBuilder.append(",").append(map.get("v_resultString")); + if (detail.getAllotQuantity().compareTo(detail.getQuantity()) < 0){ + map.put("v_stockout_detail_id", detail.getStockoutDetailId()); + outStockoutMapper.autoAllot(map); + if (!"10".equals(map.get("v_result"))){ + stringBuilder.append(",").append(map.get("v_resultString")); + } } } if (stringBuilder.length()>0){ 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 f0ed70e..7502b18 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 @@ -244,6 +244,19 @@ public class PdaController extends BaseController { return pdaService.outMakeSure(trayCodeMakeSure); } + /** + * 出货异常流程 + * @param trayCodeMakeSure + * @return + */ + @PreAuthorize("@ss.hasPermi('pda:out:exception')") + @PostMapping("/outException") + @ResponseBody + public AjaxResult outException(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { + return pdaService.outException(trayCodeMakeSure); + } + + /** * 盘点出库确认 * @param trayCodeMakeSure 托盘信息 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 34f3a1c..2cd23f4 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 @@ -26,4 +26,6 @@ public interface PdaService { AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure); AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure); + + AjaxResult outException(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 85e43e2..c1412e9 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 @@ -19,6 +19,10 @@ 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.out.outStockout.domain.OutStockout; +import com.ruoyi.out.outStockout.service.IOutStockoutService; +import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail; +import com.ruoyi.out.outStockoutDetail.service.IOutStockoutDetailService; import com.ruoyi.pda.domain.TrayCodeMakeSure; import com.ruoyi.pda.domain.TrayCodeMsg; import com.ruoyi.pda.mapper.PdaMapper; @@ -34,6 +38,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; @Service public class PdaServiceImp implements PdaService { @@ -58,6 +63,10 @@ public class PdaServiceImp implements PdaService { private IBasContainerDetailsService basContainerDetailsService; @Autowired private ICheckCommitRecordService checkCommitRecordService; + @Autowired + private IOutStockoutService outStockoutService; + @Autowired + private IOutStockoutDetailService outStockoutDetailService; /** * 空托盘入库 @@ -188,35 +197,12 @@ public class PdaServiceImp implements PdaService { @Override @Transactional(rollbackFor = Exception.class) public AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure) { - //修改拣选数量 + List mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList(); - if(CollUtil.isNotEmpty(mydoJobDetailList)){ - for (MydoJobDetail mydoJobDetail : mydoJobDetailList) { - MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId()); - BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity()); - BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity()); - mydoJobDetailOld.setPickQuantity(oldPickQuantity.add(newPickQuantity).toString()); - mydoJobDetailService.updateMydoJobDetail(mydoJobDetailOld); - - BasContainerDetails basContainerDetailsParam = new BasContainerDetails(); - basContainerDetailsParam.setContainerId(trayCodeMakeSure.getContainerCode()); - basContainerDetailsParam.setProductId(mydoJobDetailOld.getProductId()); - List basContainerDetails = basContainerDetailsService.selectBasContainerDetailsList(basContainerDetailsParam); - if (CollUtil.isNotEmpty(basContainerDetails)){ - BasContainerDetails oldBasContainerDetails = basContainerDetails.get(0); - oldBasContainerDetails.setQuantity(oldBasContainerDetails.getQuantity()+Convert.toLong(mydoJobDetail.getPickQuantity())); - basContainerDetailsService.updateBasContainerDetails(oldBasContainerDetails); - }else { - BasContainerDetails newBasContainerDetails = new BasContainerDetails(); - newBasContainerDetails.setContainerId(trayCodeMakeSure.getContainerCode()); - newBasContainerDetails.setProductId(mydoJobDetail.getProductId()); - newBasContainerDetails.setQuantity(Convert.toLong(mydoJobDetail.getPickQuantity())); - basContainerDetailsService.insertBasContainerDetails(newBasContainerDetails); - } - } - + if(CollUtil.isEmpty(mydoJobDetailList)){ + return AjaxResult.warn("拣选的物料不能为空"); } - //查询当前任务是否已经全部拣选完成 + //判断任务是否存在 MydoJob mydoJobParam = new MydoJob(); mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode()); List mydoJobList = mydoJobService.selectMydoJobList(mydoJobParam); @@ -231,7 +217,106 @@ public class PdaServiceImp implements PdaService { return AjaxResult.warn("子任务不存在"); } - boolean flag = mydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity())); + //获取单据类型 + OutStockout outStockoutParam = new OutStockout(); + outStockoutParam.setStockoutId(mydoJobDetails.get(0).getInOrOutId()); + List outStockouts = outStockoutService.selectOutStockoutList(outStockoutParam); + if (CollUtil.isEmpty(outStockouts)) { + return AjaxResult.warn("单据不存在"); + } + String billType = outStockouts.get(0).getOutType(); + + switch (billType) { + case "1": + //销售单据 + return handleOutType1(trayCodeMakeSure,mydoJobDetailList,mydoJobList.get(0)); + case "2": + //退货单据 不绑定容器 + return handleOutType2(trayCodeMakeSure,mydoJobDetailList,mydoJobList.get(0)); + default: + return AjaxResult.warn("单据类型错误"); + } + } + + /** + * 处理退货出库 + * @param trayCodeMakeSure + * @param mydoJobDetailList + * @param mydoJob + * @return + */ + + private AjaxResult handleOutType2(TrayCodeMakeSure trayCodeMakeSure,List mydoJobDetailList,MydoJob mydoJob) { + //修改拣选数量 + for (MydoJobDetail mydoJobDetail : mydoJobDetailList) { + MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId()); + BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity()); + BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity()); + mydoJobDetailOld.setPickQuantity(oldPickQuantity.add(newPickQuantity).toString()); + mydoJobDetailService.updateMydoJobDetail(mydoJobDetailOld); + } + //判断拣选数量是否等于出库数量 + MydoJobDetail mydoJobDetailParam = new MydoJobDetail(); + mydoJobDetailParam.setJobId(mydoJob.getJobId()); + List currentMydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam); + boolean flag = currentMydoJobDetails.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("拣选完成"); + } + } + + /** + * 处理正常出库 + * @param trayCodeMakeSure + * @param mydoJobDetailList + * @param mydoJob + * @return + */ + private AjaxResult handleOutType1(TrayCodeMakeSure trayCodeMakeSure,List mydoJobDetailList,MydoJob mydoJob) { + + + for (MydoJobDetail mydoJobDetail : mydoJobDetailList) { + + //修改拣选数量 + MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId()); + BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity()); + BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity()); + mydoJobDetailOld.setPickQuantity(oldPickQuantity.add(newPickQuantity).toString()); + mydoJobDetailService.updateMydoJobDetail(mydoJobDetailOld); + + //绑定容器 + BasContainerDetails basContainerDetailsParam = new BasContainerDetails(); + basContainerDetailsParam.setContainerId(trayCodeMakeSure.getContainerCode()); + basContainerDetailsParam.setProductId(mydoJobDetailOld.getProductId()); + List basContainerDetails = basContainerDetailsService.selectBasContainerDetailsList(basContainerDetailsParam); + if (CollUtil.isNotEmpty(basContainerDetails)){ + BasContainerDetails oldBasContainerDetails = basContainerDetails.get(0); + oldBasContainerDetails.setQuantity(oldBasContainerDetails.getQuantity()+Convert.toLong(mydoJobDetail.getPickQuantity())); + basContainerDetailsService.updateBasContainerDetails(oldBasContainerDetails); + }else { + BasContainerDetails newBasContainerDetails = new BasContainerDetails(); + newBasContainerDetails.setContainerId(trayCodeMakeSure.getContainerCode()); + newBasContainerDetails.setProductId(mydoJobDetail.getProductId()); + newBasContainerDetails.setQuantity(Convert.toLong(mydoJobDetail.getPickQuantity())); + basContainerDetailsService.insertBasContainerDetails(newBasContainerDetails); + } + } + + //判断拣选数量是否等于出库数量 + MydoJobDetail mydoJobDetailParam = new MydoJobDetail(); + mydoJobDetailParam.setJobId(mydoJob.getJobId()); + List currentMydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam); + boolean flag = currentMydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity())); if (flag) { HashMap map = new HashMap<>(); map.put("v_tray_code", trayCodeMakeSure.getTrayCode()); @@ -276,4 +361,45 @@ public class PdaServiceImp implements PdaService { return AjaxResult.warn(map.get("v_resultmsg").toString()); } } + + @Override + public AjaxResult outException(TrayCodeMakeSure trayCodeMakeSure) { + //判断任务是否存在 + MydoJob mydoJobParam = new MydoJob(); + mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode()); + List mydoJobList = mydoJobService.selectMydoJobList(mydoJobParam); + if (CollUtil.isEmpty(mydoJobList)) { + return AjaxResult.warn("任务不存在"); + } + + MydoJob mydoJob = mydoJobList.get(0); + + //判断拣选数量 + MydoJobDetail param = new MydoJobDetail(); + param.setJobId(mydoJob.getJobId()); + List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param); + + String stockOutId = ""; + + for (MydoJobDetail mydoJobDetail : mydoJobDetails) { + //修改单据实际分配数量 + BigDecimal pickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity()); + OutStockoutDetail outStockoutDetail = outStockoutDetailService.selectOutStockoutDetailByStockoutDetailId(mydoJobDetail.getInOrOutDId()); + outStockoutDetail.setAllotQuantity(outStockoutDetail.getAllotQuantity().subtract(pickQuantity)); + stockOutId = outStockoutDetail.getStockoutId(); + outStockoutDetailService.updateOutStockoutDetail(outStockoutDetail); + } + //生成回流任务,返回原库位,标记货位为异常待盘点状态 + 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)) { + //自动分配 + outStockoutService.autoAllot(stockOutId); + return AjaxResult.success("操作成功"); + } else { + throw new RuntimeException(map.get("v_resultmsg").toString()); + } + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/domain/BasStock.java b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/domain/BasStock.java index 25061ce..f78ddf0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/domain/BasStock.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/domain/BasStock.java @@ -6,6 +6,8 @@ import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import java.util.List; + /** * 库存信息对象 bas_stock * @@ -125,6 +127,16 @@ public class BasStock extends BaseEntity private String productId; + private List typeData; + + public List getTypeData() { + return typeData; + } + + public void setTypeData(List typeData) { + this.typeData = typeData; + } + public String getProductId() { return productId; } diff --git a/ruoyi-admin/src/main/resources/mapper/check/CheckDifferenceRecordMapper.xml b/ruoyi-admin/src/main/resources/mapper/check/CheckDifferenceRecordMapper.xml index 0e3f174..0b5d20b 100644 --- a/ruoyi-admin/src/main/resources/mapper/check/CheckDifferenceRecordMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/check/CheckDifferenceRecordMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + diff --git a/ruoyi-ui/src/views/check/flat/index.vue b/ruoyi-ui/src/views/check/flat/index.vue new file mode 100644 index 0000000..2eeaf1f --- /dev/null +++ b/ruoyi-ui/src/views/check/flat/index.vue @@ -0,0 +1,586 @@ + + +