From f5f4d1007a380aeba9bc9de885894c6e4fe58164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=80=A1=E8=93=89?= <377046077@qq.com> Date: Tue, 30 Dec 2025 09:28:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E9=83=A8=E5=88=86=E5=92=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/ToErpApiController.java | 21 +- .../api/domain/DeliveryNoticeItemVo.java | 38 +++ .../ruoyi/api/domain/DeliveryNoticeVo.java | 52 ++++ .../com/ruoyi/api/service/IToErpService.java | 7 +- .../api/service/impl/ToErpServiceImpl.java | 208 ++++++++++++++++ .../in/stockin/domain/vo/InstockInVo.java | 10 + .../service/impl/InStockinServiceImpl.java | 12 +- .../mapper/MydoJobDetailMapper.java | 2 +- .../service/IMydoJobDetailService.java | 2 +- .../impl/MydoJobDetailServiceImpl.java | 4 +- .../ruoyi/pda/controller/PdaController.java | 80 +++++- .../java/com/ruoyi/pda/mapper/PdaMapper.java | 8 + .../com/ruoyi/pda/service/PdaService.java | 27 +- .../com/ruoyi/pda/service/PdaServiceImp.java | 92 +++++-- .../stock/stock/mapper/BasStockMapper.java | 3 + .../src/main/resources/application-druid.yml | 2 +- .../resources/mapper/in/InStockinMapper.xml | 17 +- .../mapper/job/MydoJobDetailMapper.xml | 6 +- .../main/resources/mapper/pda/PdaMapper.xml | 17 ++ .../resources/mapper/stock/BasStockMapper.xml | 8 + .../src/views/in/stockIn/add/index_new.vue | 233 ++++++++---------- ruoyi-ui/src/views/in/stockIn/index.vue | 82 +++--- 22 files changed, 705 insertions(+), 226 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/DeliveryNoticeItemVo.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/DeliveryNoticeVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java index 4002f80..3f6f70d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java @@ -1,22 +1,11 @@ package com.ruoyi.api.controller; -import cn.hutool.json.JSONUtil; -import com.ruoyi.api.domain.ReMaterialParam; -import com.ruoyi.api.domain.RequestEnter; -import com.ruoyi.api.domain.WmsJobRequest; import com.ruoyi.api.service.IToErpService; -import com.ruoyi.api.service.IToWmsService; -import com.ruoyi.bas.BasCustomer.domain.BasCustomer; -import com.ruoyi.bas.BasProduct.domain.BasProduct; -import com.ruoyi.bas.BasSupplier.domain.BasSupplier; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.log.domain.RequestLog; -import com.ruoyi.log.service.IRequestLogService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; -import java.util.Map; +import com.ruoyi.api.domain.DeliveryNoticeVo; /** * 作业统计 Controller @@ -28,6 +17,14 @@ public class ToErpApiController { @Autowired private IToErpService toErpService; + /** + * 接收入出库通知单 + */ + @PostMapping("/receiveDeliveryNotice") + public AjaxResult receiveDeliveryNotice(@RequestBody DeliveryNoticeVo deliveryNoticeVo) { + return toErpService.receiveDeliveryNotice(deliveryNoticeVo); + } + /** * 回传其他出入库单 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/DeliveryNoticeItemVo.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/DeliveryNoticeItemVo.java new file mode 100644 index 0000000..1264a65 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/DeliveryNoticeItemVo.java @@ -0,0 +1,38 @@ +package com.ruoyi.api.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +/** + * 出入库通知单-子表接收对象 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class DeliveryNoticeItemVo { + /** 行号 */ + private String lineNo; + /** 存货编码 */ + private String inventoryCode; + /** 存货名称 */ + private String inventoryName; + /** 规格型号 */ + private String specModel; + /** 层级关系 */ + private String levelRelation; + /** 上层物料 */ + private String upperMaterial; + /** 顶层物料 */ + private String topMaterial; + /** 批次 */ + private String lotNo; + /** 计量单位 */ + private String unit; + /** 数量 */ + private String quantity; + /** 备注 */ + private String remark; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/DeliveryNoticeVo.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/DeliveryNoticeVo.java new file mode 100644 index 0000000..1f88938 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/DeliveryNoticeVo.java @@ -0,0 +1,52 @@ +package com.ruoyi.api.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.List; + +/** + * 出入库通知单-主表接收对象 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class DeliveryNoticeVo { + /** 合同号 */ + private String contractNo; + /** 销售订单号 */ + private String salesOrderNo; + /** 出库类型(AGV搬运/人工出库/到缓存区等) */ + private String outType; + /** 是否按项目出(Y/N 或 1/0) */ + private String isProjectOut; + /** 单据号 */ + private String billNo; + /** 单据时间,格式:yyyy-MM-dd HH:mm:ss */ + private String billDate; + /** 审核时间,格式:yyyy-MM-dd HH:mm:ss */ + private String approveDate; + /** 单据类型(生产领料/生产退料/产品入库/采购入库等) */ + private String billType; + /** 客商代号 */ + private String customerId; + /** 客商名称 */ + private String customerName; + /** 项目号 */ + private String projectNo; + /** 制单人 */ + private String createMan; + /** 审核人 */ + private String approveMan; + /** 操作类型:1新增 2修改 3删除 */ + private String opType; + /** 仓库编码 */ + private String warehouseId; + /** 备注 */ + private String remark; + /** 子表明细列表 */ + private List detailList; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java index b8a796b..f1999d0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java @@ -1,17 +1,16 @@ package com.ruoyi.api.service; -import com.ruoyi.bas.BasCustomer.domain.BasCustomer; +import com.ruoyi.api.domain.DeliveryNoticeVo; import com.ruoyi.bas.BasProduct.domain.BasProduct; -import com.ruoyi.bas.BasSupplier.domain.BasSupplier; import com.ruoyi.common.core.domain.AjaxResult; -import java.util.Map; - /** * 作业统计 Service 接口 */ public interface IToErpService { + AjaxResult receiveDeliveryNotice(DeliveryNoticeVo deliveryNoticeVo); + void callbackTransferBill(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java index 9f37224..605843e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java @@ -7,19 +7,33 @@ import com.ruoyi.api.service.IToErpService; import com.ruoyi.bas.BasProduct.domain.BasProduct; import com.ruoyi.bas.basJobId.service.IBasJobIdService; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.in.erp.domain.TransferBillCallback; import com.ruoyi.in.erp.service.ITransferBillCallbackService; +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.service.IMydoJobService; import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail; import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService; import com.ruoyi.log.domain.RequestLog; import com.ruoyi.log.service.IRequestLogService; +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.out.outStockoutDetail.mapper.OutStockoutDetailMapper; +import com.ruoyi.out.outStockout.mapper.OutStockoutMapper; +import org.apache.pdfbox.pdmodel.interactive.viewerpreferences.PDViewerPreferences; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.math.BigDecimal; /** * 作业统计 Service 实现 @@ -40,12 +54,206 @@ public class ToErpServiceImpl implements IToErpService { @Autowired private IRequestLogService requestLogService; + @Autowired + private IInStockinService inStockinService; + @Autowired + private IInStockinDetailService inStockinDetailService; + + @Autowired + private IOutStockoutService outStockoutService; + + @Autowired + private IOutStockoutDetailService outStockoutDetailService; + private static final String TO_ERP_URL = "http://192.168.1.100:8080/api/"; //todo 需要调试 private static final String WORKSHOP_INBOUND_ORDER_URL = TO_ERP_URL+"TRANSACTION_DOC"; //todo 需要调试 private static final String OTHER_IN_OUTBOUND_ORDER_URL = TO_ERP_URL+"WIP_TRANSFER_DOC"; + /** + * 处理送货通知单的业务逻辑 + * 根据单据类型和操作类型进行入库单或出库单的增删改操作 + * + * @param deliveryNoticeVo 送货通知单数据对象,包含单据基本信息和明细列表 + * @return AjaxResult 操作结果,包含成功或错误信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult receiveDeliveryNotice(DeliveryNoticeVo deliveryNoticeVo) { + + if (deliveryNoticeVo == null || deliveryNoticeVo.getDetailList() == null || deliveryNoticeVo.getDetailList().isEmpty()){ + return AjaxResult.error("单据或明细不能为空"); + } + String billType = deliveryNoticeVo.getBillType(); + String opType = deliveryNoticeVo.getOpType(); +// String status = deliveryNoticeVo.getStatus(); + int type = 0; + try { type = Integer.parseInt(billType); } catch (Exception ignored) {} + + // 处理入库单相关操作(单据类型1-4) + if (type >= 1 && type <= 4) { + InStockin param = new InStockin(); + param.setStockinId(deliveryNoticeVo.getBillNo()); + List existList = inStockinService.selectInStockinListApi(param); + InStockin exist = (existList != null && !existList.isEmpty()) ? existList.get(0) : null; + + // 删除操作(操作类型3) + if ("3".equals(opType)) { + if (exist == null) { + return AjaxResult.error("单据不存在"); + } + if ("3".equals(exist.getStatus())) { + return AjaxResult.error("单据已执行,禁止删除"); + } + if (exist.getStockinGuid() != null) { + inStockinDetailService.deleteInStockinDetailByStockinGuid(exist.getStockinGuid()); + inStockinService.deleteInStockinByStockinGuid(exist.getStockinGuid()); + } + + return AjaxResult.success(); + } + + // 新增或修改操作(操作类型1或2) + if ("2".equals(opType) || "1".equals(opType)) { + if ("2".equals(opType) && exist == null) { + return AjaxResult.error("单据不存在,无法修改"); + } + if (exist != null && "3".equals(exist.getStatus()) && "2".equals(opType)) { + return AjaxResult.error("单据已执行,禁止修改"); + } + InStockin inStockin = exist != null ? exist : new InStockin(); + if (exist == null) { + inStockin.setStockinGuid(UUID.randomUUID().toString()); + } + inStockin.setStockinId(deliveryNoticeVo.getBillNo()); + inStockin.setInType(deliveryNoticeVo.getBillType()); + inStockin.setCreateDate(deliveryNoticeVo.getBillDate()); + inStockin.setCreateManId(deliveryNoticeVo.getCreateMan()); + inStockin.setStatus("1"); + inStockin.setWarehouseId(deliveryNoticeVo.getWarehouseId()); +// inStockin.setErpBill(deliveryNoticeVo.getBillNo()); + inStockin.setStockSource("1"); + inStockin.setDepartmentNo(deliveryNoticeVo.getProjectNo());//项目号 + inStockin.setSupplierNo(deliveryNoticeVo.getCustomerId());//供应商编码 + inStockin.setClassNo(deliveryNoticeVo.getCustomerName());//供应商名称 + inStockin.setSpare1(deliveryNoticeVo.getContractNo());//合同号 + inStockin.setSpare2(deliveryNoticeVo.getSalesOrderNo());//销售订单号 + inStockin.setSpare3(deliveryNoticeVo.getApproveDate());//审核时间 + inStockin.setSpare4(deliveryNoticeVo.getApproveMan());//审核人 + inStockin.setSpare5(deliveryNoticeVo.getRemark()); + if (exist == null) { + inStockinService.insertInStockin(inStockin); + } else { + inStockinService.updateInStockin(inStockin); + inStockinDetailService.deleteInStockinDetailByStockinGuid(inStockin.getStockinGuid()); + } + List items = deliveryNoticeVo.getDetailList(); + List detailList = new ArrayList<>(); + int i = 1; + for (DeliveryNoticeItemVo item : items) { + InStockinDetail detail = new InStockinDetail(); + detail.setStockinGuid(inStockin.getStockinGuid()); + detail.setStockinDetailId(item.getLineNo()); + detail.setStockinId(inStockin.getStockinId()); + detail.setProductId(item.getInventoryCode()); + detail.setProductName(item.getInventoryName()); + detail.setSpec(item.getSpecModel()); + detail.setUnit(item.getUnit()); + detail.setQuantity(item.getQuantity()); + detail.setLotNo(item.getLotNo()); + detail.setStockStatus("0"); + detail.setAssignNum("0"); + detail.setScanNum("0"); + detailList.add(detail); + i++; + } + inStockinDetailService.insertInStockinDetailList(detailList); + return AjaxResult.success(); + } + } + // 处理出库单相关操作(单据类型5-7) + else if (type >= 5 && type <= 7) { + OutStockout param = new OutStockout(); + param.setStockoutId(deliveryNoticeVo.getBillNo()); + List outList = outStockoutService.selectOutStockoutList(param); + OutStockout exist = (outList != null && !outList.isEmpty()) ? outList.get(0) : null; + + // 删除操作(操作类型3) + if ("3".equals(opType)) { + if (exist == null) { + return AjaxResult.success(); + } + if ("3".equals(exist.getStatus())) { + return AjaxResult.error("单据已完成,禁止删除"); + } + OutStockoutDetail q = new OutStockoutDetail(); + q.setStockoutId(deliveryNoticeVo.getBillNo()); + List details = outStockoutDetailService.selectOutStockoutDetailList(q); + if (details != null && !details.isEmpty()) { + String[] ids = details.stream().map(OutStockoutDetail::getStockoutDetailId).toArray(String[]::new); + outStockoutDetailService.deleteOutStockoutDetailByStockoutDetailIds(ids); + } + outStockoutService.deleteOutStockoutByStockoutGuid(exist.getStockoutGuid()); + return AjaxResult.success(); + } + + // 新增或修改操作(操作类型1或2) + if ("2".equals(opType) || "1".equals(opType)) { + if ("2".equals(opType) && exist == null) { + return AjaxResult.error("单据不存在,无法修改"); + } + if (exist != null && "3".equals(exist.getStatus())) { + return AjaxResult.error("单据已完成,禁止修改"); + } + OutStockout out = exist != null ? exist : new OutStockout(); + if (exist == null) { + out.setStockoutGuid(UUID.randomUUID().toString()); + } + out.setStockoutId(deliveryNoticeVo.getBillNo()); + out.setOutType(deliveryNoticeVo.getOutType()); + out.setCreateDate(deliveryNoticeVo.getBillDate()); + out.setCreateManId(deliveryNoticeVo.getCreateMan()); + out.setStatus("1"); + out.setWarehouseId(deliveryNoticeVo.getWarehouseId()); + out.setStockoutSource("1"); + out.setDepartmentNo(deliveryNoticeVo.getProjectNo()); + out.setCustomerNo(deliveryNoticeVo.getCustomerId()); + if (exist == null) { + outStockoutService.insertOutStockout(out); + } else { + outStockoutService.updateOutStockout(out); + OutStockoutDetail q2 = new OutStockoutDetail(); + q2.setStockoutId(deliveryNoticeVo.getBillNo()); + List oldDetails = outStockoutDetailService.selectOutStockoutDetailList(q2); + if (oldDetails != null && !oldDetails.isEmpty()) { + String[] ids = oldDetails.stream().map(OutStockoutDetail::getStockoutDetailId).toArray(String[]::new); + outStockoutDetailService.deleteOutStockoutDetailByStockoutDetailIds(ids); + } + } + int i = 1; + for (DeliveryNoticeItemVo item : deliveryNoticeVo.getDetailList()) { + OutStockoutDetail d = new OutStockoutDetail(); + String line = item.getLineNo() != null ? item.getLineNo() : String.valueOf(i); + d.setStockoutDetailId(out.getStockoutId()+"-"+line); + d.setStockoutGuid(out.getStockoutGuid()); + d.setStockoutId(out.getStockoutId()); + d.setProductId(item.getInventoryCode()); + d.setLotNo(item.getLotNo()); + try { + d.setQuantity(new BigDecimal(item.getQuantity())); + } catch (Exception e) { + d.setQuantity(BigDecimal.ZERO); + } + outStockoutDetailService.insertOutStockoutDetail(d); + i++; + } + return AjaxResult.success(); + } + } + return AjaxResult.error("不支持的单据类型或操作类型"); + + } @Override diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/domain/vo/InstockInVo.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/domain/vo/InstockInVo.java index e1a9007..182314f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/domain/vo/InstockInVo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/domain/vo/InstockInVo.java @@ -27,6 +27,16 @@ public class InstockInVo { @NotNull private String erpBill; + private String departmentNo; + + private String spare1; + + private String spare2; + + private String spare5; + + private String classNo; + private List productVoList; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/impl/InStockinServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/impl/InStockinServiceImpl.java index 6143a8a..508d469 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/impl/InStockinServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/impl/InStockinServiceImpl.java @@ -100,14 +100,20 @@ public class InStockinServiceImpl implements IInStockinService inStockin.setStockinGuid(rkdId); inStockin.setStockinId(rkdId); inStockin.setCreateDate(DateUtil.formatDateTime(DateUtil.date())); - inStockin.setCreateManId(Convert.toStr(SecurityUtils.getUserId())); - inStockin.setDepartmentNo(Convert.toStr(SecurityUtils.getDeptId())); + inStockin.setSpare3(DateUtil.formatDateTime(DateUtil.date())); + inStockin.setCreateManId(Convert.toStr(SecurityUtils.getUsername())); + inStockin.setSpare4(Convert.toStr(SecurityUtils.getUserId())); inStockin.setSupplierNo(inStockinVo.getSupplierId()); inStockin.setErpBill(inStockinVo.getErpBill()); inStockin.setInType(inStockinVo.getInType()); inStockin.setWarehouseId(inStockinVo.getWarehouseId()); + inStockin.setDepartmentNo(inStockinVo.getDepartmentNo()); + inStockin.setSpare1(inStockinVo.getSpare1()); + inStockin.setSpare2(inStockinVo.getSpare2()); + inStockin.setSpare5(inStockinVo.getSpare5()); + inStockin.setClassNo(inStockinVo.getClassNo()); inStockin.setStatus("1"); - inStockin.setStockSource("1"); + inStockin.setStockSource("0"); inStockinMapper.insertInStockin(inStockin); for (int i = 1; i <= productVoList.size(); i++) { BasProduct basProduct = productVoList.get(i-1); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/mapper/MydoJobDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/mapper/MydoJobDetailMapper.java index 249522c..64d3db9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/mapper/MydoJobDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/mapper/MydoJobDetailMapper.java @@ -67,7 +67,7 @@ public interface MydoJobDetailMapper List selectMydoJobDetailListByJobId(String jobId); - List selectMydoJobDetailListByExit(MydoJob mydoJob); + List selectMydoJobDetailListByTrayCode(MydoJob mydoJob); List selectPdMydoJobDetailListByExit(MydoJob mydoJob); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/service/IMydoJobDetailService.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/service/IMydoJobDetailService.java index ee8b867..ba5ebe9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/service/IMydoJobDetailService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/service/IMydoJobDetailService.java @@ -68,7 +68,7 @@ public interface IMydoJobDetailService List selectMydoJobDetailListByJobId(String jobId); - List selectMydoJobDetailListByExit(MydoJob mydoJob); + List selectMydoJobDetailListByTrayCode(MydoJob mydoJob); List selectPdMydoJobDetailListByExit(MydoJob mydoJob); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/service/impl/MydoJobDetailServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/service/impl/MydoJobDetailServiceImpl.java index a64dcba..0c0301e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/service/impl/MydoJobDetailServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojobdetail/service/impl/MydoJobDetailServiceImpl.java @@ -116,8 +116,8 @@ public class MydoJobDetailServiceImpl implements IMydoJobDetailService } @Override - public List selectMydoJobDetailListByExit(MydoJob mydoJob) { - return mydoJobDetailMapper.selectMydoJobDetailListByExit(mydoJob); + public List selectMydoJobDetailListByTrayCode(MydoJob mydoJob) { + return mydoJobDetailMapper.selectMydoJobDetailListByTrayCode(mydoJob); } @Override 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 7c03b4a..f43fd4a 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 @@ -6,8 +6,12 @@ import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; +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.stock.stock.domain.BasStock; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -17,6 +21,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.List; + @Controller @RequestMapping("/pda") @Slf4j @@ -24,23 +30,79 @@ public class PdaController extends BaseController { @Autowired private PdaService pdaService; + @Autowired + private IInStockinDetailService iInStockinDetailService; + + /** + * 查询是否有半满托盘 + */ + @RequestMapping("/selectHasHalfTray") + @ResponseBody + public List selectHasHalfTray(String inStockinDetailId) { + return pdaService.selectHasHalfTray(inStockinDetailId); + } + + /** + * 通过单据码查询物料详情 + */ + @RequestMapping("/selectDetailById") + @ResponseBody + public AjaxResult selectDetailById(String inStockinDetailId) { + InStockinDetail inStockinDetail = iInStockinDetailService.selectInStockinDetailByStockinDetailId(inStockinDetailId); + return AjaxResult.success(inStockinDetail); + } + + /** + * 半盘出库 + */ + + @RequestMapping("/halfTrayOut") + @ResponseBody + public AjaxResult halfTrayOut(String trayCode) { + return pdaService.halfTrayOut(trayCode); + } + + + /** + * 通过托盘码查询作业或trayMsg + */ + @RequestMapping("/selectMsgByTray") + @ResponseBody + public Object selectMsgByTray(@RequestBody TrayCodeMsg trayCodeMsg) { + return pdaService.selectMsgByTray(trayCodeMsg); + } + + /** + * 绑盘 + */ + @RequestMapping("/bindTray") + @ResponseBody + public AjaxResult bindTray(@RequestBody TrayCodeMsg trayCodeMsg) { + return pdaService.bindTray(trayCodeMsg); + } + + /** + * 确认入库 + */ + @RequestMapping("/confirmIn") + @ResponseBody + public AjaxResult confirmIn(String trayCode) { + return pdaService.confirmIn(trayCode); + } -/** - * 入库扫码生成作业 - */ + + /** + * 入库扫码生成作业 + */ @RequestMapping("/addInJob") @ResponseBody public AjaxResult addInJob(@RequestBody RequestEnter requestEnter) { return pdaService.addInJob(requestEnter); } - @RequestMapping("/selectDetailByTray") - @ResponseBody - public AjaxResult selectDetailByTray(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { - return pdaService.selectDetailByTray(trayCodeMakeSure); - } + @RequestMapping("/selectDetailByPDTray") @ResponseBody @@ -64,9 +126,9 @@ public class PdaController extends BaseController { } - /** * 盘点出库确认 + * * @param trayCodeMakeSure 托盘信息 * @return */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/mapper/PdaMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/mapper/PdaMapper.java index 11ea08d..0808393 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pda/mapper/PdaMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/mapper/PdaMapper.java @@ -4,6 +4,14 @@ import java.util.HashMap; public interface PdaMapper { + void bindTray(HashMap map); + + + + + + // + void emptyTrayIn(HashMap map); void emptyBoxIn(HashMap map); 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 444f9d2..c258a52 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 @@ -6,16 +6,41 @@ import com.ruoyi.bas.container.domain.BasContainer; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.pda.domain.TrayCodeMakeSure; import com.ruoyi.pda.domain.TrayCodeMsg; +import com.ruoyi.stock.stock.domain.BasStock; +import java.util.List; import java.util.Map; +import java.util.Objects; public interface PdaService { + /** + * 查询是否有半满托盘 + * @param inStockinDetailId + * @return + */ + List selectHasHalfTray(String inStockinDetailId); + + AjaxResult halfTrayOut(String trayCode); + + Object selectMsgByTray(TrayCodeMsg trayCodeMsg); + + AjaxResult bindTray(TrayCodeMsg trayCodeMsg); + + AjaxResult confirmIn(String trayCode); + + + + + + + public AjaxResult addInJob(RequestEnter requestEnter); - public AjaxResult selectDetailByTray(TrayCodeMakeSure trayCodeMakeSure); + + public AjaxResult selectDetailByPDTray(TrayCodeMakeSure trayCodeMakeSure); 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 3e99e18..27a5d56 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 @@ -11,6 +11,7 @@ import com.ruoyi.check.commit.service.ICheckCommitRecordService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.MessageUtils; +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; @@ -18,8 +19,12 @@ import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail; import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService; import com.ruoyi.job.mydojobdetail.service.impl.MydoJobDetailServiceImpl; 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; import com.ruoyi.pda.trayMsg.service.ITrayMsgService; +import com.ruoyi.stock.stock.domain.BasStock; +import com.ruoyi.stock.stock.mapper.BasStockMapper; import com.ruoyi.system.service.ISysRoleService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -49,6 +54,68 @@ public class PdaServiceImp implements PdaService { private IMydoJobDetailService mydoJobDetailService; @Autowired private IToWcsService toWcsService; + @Autowired + private BasStockMapper basStockMapper; + + + + @Override + public List selectHasHalfTray(String inStockinDetailId) { + InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inStockinDetailId); + List hasHalfTray = basStockMapper.selectHasHalfTray(inStockinDetail); + return hasHalfTray; + } + + + @Override + public AjaxResult halfTrayOut(String trayCode) { + return null; + } + + @Override + public Object selectMsgByTray(TrayCodeMsg trayCodeMsg) { + MydoJob mydoJob = new MydoJob(); + mydoJob.setTrayCode(trayCodeMsg.getTrayCode()); + //todo 半盘出库作业类型 + mydoJob.setInOrOut(""); + List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByTrayCode(mydoJob); + if(mydoJobDetails.size()==0){ + TrayMsg trayMsg = new TrayMsg(); + trayMsg.setTrayCode(trayCodeMsg.getTrayCode()); + List trayMsgList = trayMsgService.selectTrayMsgList(trayMsg); + return trayMsgList; + }else{ + return mydoJobDetails; + } + } + + @Override + public AjaxResult bindTray(TrayCodeMsg trayCodeMsg) { + + HashMap map = new HashMap<>(); + map.put("v_tray_code", trayCodeMsg.getTrayCode()); + map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId()); + map.put("v_quantity", Integer.valueOf(trayCodeMsg.getInQuantity())); + pdaMapper.bindTray(map); + if("10".equals(map.get("v_result").toString())){ + return AjaxResult.success(); + }else{ + return AjaxResult.error(map.get("v_resultmsg").toString()); + } + + } + + @Override + public AjaxResult confirmIn(String trayCode) { + //如果有出库作业,修改作业类型改为合盘入库类型 + //如果没有出库作业,正常生成入库作业 + return null; + } + + + + + @Override @@ -70,19 +137,8 @@ public class PdaServiceImp implements PdaService { } - @Override - public AjaxResult selectDetailByTray(TrayCodeMakeSure trayCodeMakeSure) { - String trayCode = trayCodeMakeSure.getTrayCode(); - String[] split = trayCode.split(" "); - String productId = split[8].substring(10); - MydoJob mydoJob = new MydoJob(); - mydoJob.setExitId(trayCodeMakeSure.getExitId()); - mydoJob.setProductId(productId); - mydoJob.setStatus("3"); - mydoJob.setInOrOut("21"); - List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJob); - return AjaxResult.success(mydoJobDetails); - } + + @Override public AjaxResult selectDetailByPDTray(TrayCodeMakeSure trayCodeMakeSure) { @@ -104,12 +160,12 @@ public class PdaServiceImp implements PdaService { mydoJob.setProductId(productId); mydoJob.setStatus("3"); mydoJob.setInOrOut("21"); - List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJob); - if(mydoJobDetails.size()==0){ - return AjaxResult.error("该物料没有出库作业,请检查"); - } +// List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJob); +// if(mydoJobDetails.size()==0){ +// return AjaxResult.error("该物料没有出库作业,请检查"); +// } HashMap map = new HashMap<>(); - map.put("v_tray_code", mydoJobDetails.get(0).getTrayCode()); +// map.put("v_tray_code", mydoJobDetails.get(0).getTrayCode()); pdaMapper.outMakeSure(map); String result = map.get("v_result").toString(); if ("10".equals(result)) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/mapper/BasStockMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/mapper/BasStockMapper.java index cf9f1f1..d630f00 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/mapper/BasStockMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/mapper/BasStockMapper.java @@ -1,5 +1,6 @@ package com.ruoyi.stock.stock.mapper; +import com.ruoyi.in.stockindetail.domain.InStockinDetail; import com.ruoyi.stock.stock.domain.BasStock; import org.apache.ibatis.annotations.Param; @@ -70,4 +71,6 @@ public interface BasStockMapper void resetPdRecord(); List getStockBySerial(String trayCode); + + List selectHasHalfTray(InStockinDetail inStockinDetail); } diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index ebbe83a..975df65 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -6,7 +6,7 @@ spring: druid: # 主库数据源 master: - url: jdbc:sqlserver://172.16.2.170:1433;databaseName=FT517-wms;encrypt=true;trustServerCertificate=true; + url: jdbc:sqlserver://172.16.2.170:1433;databaseName=FT546-wms;encrypt=true;trustServerCertificate=true; username: sa password: Flrd0914. # 从库数据源 diff --git a/ruoyi-admin/src/main/resources/mapper/in/InStockinMapper.xml b/ruoyi-admin/src/main/resources/mapper/in/InStockinMapper.xml index ee5bf95..2172c17 100644 --- a/ruoyi-admin/src/main/resources/mapper/in/InStockinMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/in/InStockinMapper.xml @@ -50,15 +50,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" is2.spare4, is2.spare3, is2.spare5, - bw.warehouse_name, - bs.supplier_name, - sd.dept_name , - su.user_name + bw.warehouse_name from in_stockin is2 left join bas_warehouse bw on is2.warehouse_id = bw.warehouse_id - left join bas_supplier bs on bs.supplier_no = is2.supplier_no - left join sys_dept sd on is2.department_no = sd.dept_id - left join sys_user su on su.user_id = is2.create_man_id +-- left join bas_supplier bs on bs.supplier_no = is2.supplier_no +-- left join sys_dept sd on is2.department_no = sd.dept_id +-- left join sys_user su on su.user_id = is2.create_man_id + diff --git a/ruoyi-admin/src/main/resources/mapper/pda/PdaMapper.xml b/ruoyi-admin/src/main/resources/mapper/pda/PdaMapper.xml index 5ccad39..4a37422 100644 --- a/ruoyi-admin/src/main/resources/mapper/pda/PdaMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/pda/PdaMapper.xml @@ -3,6 +3,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + select * from bas_stock where tray_code = #{trayCode} + + diff --git a/ruoyi-ui/src/views/in/stockIn/add/index_new.vue b/ruoyi-ui/src/views/in/stockIn/add/index_new.vue index 4e62125..318b2bf 100644 --- a/ruoyi-ui/src/views/in/stockIn/add/index_new.vue +++ b/ruoyi-ui/src/views/in/stockIn/add/index_new.vue @@ -6,21 +6,6 @@ - - - - - - - - - - @@ -33,10 +18,34 @@ - - - + + + + + + + + + + + + + + + + + + + + + + @@ -62,72 +71,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + - - + + - - - - - - - - - - - - - - + + + + + + + +