From 4e79dcb95f5c41fe3cad205c2308950222c4632f Mon Sep 17 00:00:00 2001 From: lsymicc Date: Mon, 8 Dec 2025 17:32:24 +0800 Subject: [PATCH] =?UTF-8?q?erp=E5=8D=95=E6=8D=AE=E5=90=8C=E6=AD=A5wms?= =?UTF-8?q?=E5=8D=95=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/ToErpApiController.java | 2 +- .../com/ruoyi/api/service/IToErpService.java | 8 +- .../api/service/impl/ToErpServiceImpl.java | 96 +++++++++++++++++-- .../domain/ErpInStockinDetail.java | 4 + .../controller/InStockinController.java | 12 +-- .../in/stockin/service/IInStockinService.java | 12 +-- .../stockindetail/domain/InStockinDetail.java | 12 +++ 7 files changed, 125 insertions(+), 21 deletions(-) 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 cadbb9f..0d23bd6 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 @@ -60,6 +60,6 @@ public class ToErpApiController { @PostMapping("/qqq") public AjaxResult qqq() { ErpStockinParam p=new ErpStockinParam(); - return toErpService.getStockinList(p); + return toErpService.getErpStockinList(p); } } 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 72ac359..3f5135f 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 @@ -6,6 +6,8 @@ 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.in.ErpInStockin.domain.ErpInStockin; +import com.ruoyi.in.ErpInStockinDetail.domain.ErpInStockinDetail; import java.util.Map; @@ -32,5 +34,9 @@ public interface IToErpService { AjaxResult receiveOutStockList(); - AjaxResult getStockinList(ErpStockinParam erpStockinParam); + AjaxResult getErpStockinList(ErpStockinParam erpStockinParam); + + void AddStockinByErpStockin(ErpInStockin erpInStockin); + + void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail); } 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 53e56ad..690e456 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 @@ -2,6 +2,7 @@ package com.ruoyi.api.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; @@ -23,6 +24,10 @@ import com.ruoyi.in.ErpInStockin.domain.ErpInStockin; import com.ruoyi.in.ErpInStockin.service.IErpInStockinService; import com.ruoyi.in.ErpInStockinDetail.domain.ErpInStockinDetail; import com.ruoyi.in.ErpInStockinDetail.service.IErpInStockinDetailService; +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.out.ErpOutStock.domain.ErpOutStock; import com.ruoyi.out.OutStockMiddle.domain.OutStockMiddle; import com.ruoyi.out.ErpOutStockDetail.domain.ErpOutStockDetail; @@ -40,6 +45,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.TimeUnit; @@ -71,12 +77,22 @@ public class ToErpServiceImpl implements IToErpService { @Autowired private IOutStockoutDetailService outStockoutDetailService; + //erp入库主单 @Autowired private IErpInStockinService erpInStockinService; + //erp入库子单 @Autowired private IErpInStockinDetailService erpInStockinDetailService; + //wms入库主单 + @Autowired + private IInStockinService inStockinService; + + //wms入库子单 + @Autowired + private IInStockinDetailService inStockinDetailService; + @Autowired private IBasJobIdService basJobIdService; @@ -421,7 +437,7 @@ public class ToErpServiceImpl implements IToErpService { * @param erpStockinParam * @return */ - public AjaxResult getStockinList(ErpStockinParam erpStockinParam){ + public AjaxResult getErpStockinList(ErpStockinParam erpStockinParam){ erpStockinParam = new ErpStockinParam(); @@ -463,7 +479,9 @@ public class ToErpServiceImpl implements IToErpService { erpInStockin.setSysIcusIInheritIdIidI413(Convert.toStr(list.get(16))); erpInStockin.setSysIcusIInheritIdIidI414(Convert.toStr(list.get(17))); erpInStockin.setSysIcusIInheritIdIidI415(Convert.toStr(list.get(18))); - erpInStockin.setStockinGuid(UUID.randomUUID().toString()); + + String id = "RK" + DateUtil.date().toString("yyyyMMdd") + erpInStockin.getKuin(); + erpInStockin.setStockinGuid(id); //校验单据是否已经在表中 - 新增/更新 if (ObjUtil.isNotNull(erpInStockinService.selectErpInStockinByKuin(erpInStockin.getKuin()))) { @@ -472,6 +490,9 @@ public class ToErpServiceImpl implements IToErpService { erpInStockinService.insertErpInStockin(erpInStockin); } + //更新wms主单 + AddStockinByErpStockin(erpInStockin); + //======================================================================================================================================== //根据主单【kuinlist】字段获取子单信息 @@ -493,17 +514,18 @@ public class ToErpServiceImpl implements IToErpService { erpInStockinDetail.setWarehousePositionID(0L);//货位 erpInStockinDetail.setKu(0L);//库区 erpInStockinDetail.setPh(Convert.toStr(details.get(17)));//批号 - erpInStockinDetail.setPh(Convert.toStr(details.get(18)));//序列号 - erpInStockinDetail.setPh(Convert.toStr(details.get(19)));//生产日期 - erpInStockinDetail.setPh(Convert.toStr(details.get(20)));//有效日期 - erpInStockinDetail.setPh(Convert.toStr(details.get(21)));//到货日期 - erpInStockinDetail.setPh(Convert.toStr(details.get(29)));//装卸工 + erpInStockinDetail.setXlh(Convert.toStr(details.get(18)));//序列号 + erpInStockinDetail.setDatesc(Convert.toStr(details.get(19)));//生产日期 + erpInStockinDetail.setDateyx(Convert.toStr(details.get(20)));//有效日期 + erpInStockinDetail.setDate2(Convert.toStr(details.get(21)));//到货日期 + erpInStockinDetail.setSysIcusIInheritIdIidI1(Convert.toStr(details.get(29)));//装卸工 erpInStockinDetail.setSpare1(Convert.toStr(details.get(1)));//产品名称 - product_name erpInStockinDetail.setSpare2(Convert.toStr(details.get(2)));//产品型号 - product_id //关联主单 erpInStockinDetail.setKuin(erpInStockin.getKuin());//入库id erpInStockinDetail.setRkbh(erpInStockin.getRkbh());//入库编号 + erpInStockinDetail.setSpare3(erpInStockin.getStockinGuid());//入库单guid //校验数据是否已经在表中 - 新增/更新 if (ObjUtil.isNotNull(erpInStockinDetailService.selectErpInStockinDetailById(erpInStockinDetail.getId()))) { @@ -511,6 +533,9 @@ public class ToErpServiceImpl implements IToErpService { }else{ erpInStockinDetailService.insertErpInStockinDetail(erpInStockinDetail); } + + //更新wms子单 + AddStockinDetailByErpStockinDetail(erpInStockinDetail); } }else { log.info("请求未获取子单详情【needList:0】"); @@ -525,8 +550,65 @@ public class ToErpServiceImpl implements IToErpService { return AjaxResult.success(); } + /** + * 根据erp入库单更新wms入库主单 + * @param erpInStockin erp入库主单 + */ + public void AddStockinByErpStockin(ErpInStockin erpInStockin) { + InStockin inStockin = new InStockin(); + inStockin.setStockinGuid(erpInStockin.getStockinGuid());//guid + inStockin.setStockinId(erpInStockin.getKuin());//入库单据id + inStockin.setStatus(erpInStockin.getComplete1());//入库状态(区别erpInStockin.getStatus() - 审批状态) + inStockin.setCreateDate(DateUtil.now());//生成时间 + inStockin.setErpBill(erpInStockin.getRkbh());//入库编号 RK_2025082107 + inStockin.setInType(erpInStockin.getSort1());//入库类别 + inStockin.setWarehouseId("0");//库区 + inStockin.setStockSource("Erp");//单据来源 + inStockin.setCustomerNo(erpInStockin.getSysIcusIInheritIdIidI413());//客户编码 + inStockin.setRemark(erpInStockin.getIntro());//入库备注 + + try { + if (ObjUtil.isNotNull(inStockinService.selectInStockinByStockinGuid(erpInStockin.getStockinGuid()))) { + inStockinService.updateInStockin(inStockin); + }else{ + inStockinService.insertInStockin(inStockin); + } + }catch(Exception e){ + log.error("生成/更新主单据失败,主单据号:" + inStockin.getStockinId() + ",异常信息:" + e.getMessage()); + } + } + + /** + * 根据erp入库子单更新wms入库子单明细 + * @param erpInStockinetail + */ + public void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail) { + + InStockinDetail inStockinDetail = new InStockinDetail(); + + inStockinDetail.setStockinDetailId(erpInStockinetail.getId().toString());//明细id + inStockinDetail.setStockinGuid(erpInStockinetail.getSpare3());//入库主单guid + inStockinDetail.setStockinId(erpInStockinetail.getKuin());//主单id + inStockinDetail.setLotNo(erpInStockinetail.getPh());//批次 + inStockinDetail.setProductId(erpInStockinetail.getSpare2());//物料编号 + inStockinDetail.setAssignNum(erpInStockinetail.getQuantity().toString());//入库数量 + inStockinDetail.setWarehouseId("0");//库区 + inStockinDetail.setPrintDate(DateUtil.now());//库区 + inStockinDetail.setStatus("");//单据状态 + inStockinDetail.setRemark("");//入库备注 + + try { + if (ObjUtil.isNotNull(inStockinDetailService.selectInStockinDetailByStockinDetailId(inStockinDetail.getStockinGuid()))) { + inStockinDetailService.updateInStockinDetail(inStockinDetail); + }else{ + inStockinDetailService.insertInStockinDetail(inStockinDetail); + } + }catch(Exception e){ + log.error("生成/更新单据明细失败,主单据号:" + inStockinDetail.getStockinId() + ",异常信息:" + e.getMessage()); + } + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/ErpInStockinDetail/domain/ErpInStockinDetail.java b/ruoyi-admin/src/main/java/com/ruoyi/in/ErpInStockinDetail/domain/ErpInStockinDetail.java index ba0a90c..1b1b8ba 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/ErpInStockinDetail/domain/ErpInStockinDetail.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/ErpInStockinDetail/domain/ErpInStockinDetail.java @@ -81,6 +81,10 @@ public class ErpInStockinDetail extends BaseEntity * 产品型号 - product_id */ private String spare2; + + /** + * 主单guid + */ private String spare3; private String spare4; private String spare5; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/controller/InStockinController.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/controller/InStockinController.java index 5a138ae..29ad349 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/controller/InStockinController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/controller/InStockinController.java @@ -75,10 +75,10 @@ public class InStockinController extends BaseController * 获取入库单据详细信息 */ @PreAuthorize("@ss.hasPermi('in:stockIn:query')") - @GetMapping(value = "/{stockinGuid}") - public AjaxResult getInfo(@PathVariable("stockinGuid") String stockinGuid) + @GetMapping(value = "/{StockinGuid}") + public AjaxResult getInfo(@PathVariable("StockinGuid") String StockinGuid) { - return success(inStockinService.selectInStockinByStockinGuid(stockinGuid)); + return success(inStockinService.selectInStockinByStockinGuid(StockinGuid)); } /** @@ -108,9 +108,9 @@ public class InStockinController extends BaseController */ @PreAuthorize("@ss.hasPermi('in:stockIn:remove')") @Log(title = "入库单据", businessType = BusinessType.DELETE) - @DeleteMapping("/{stockinGuids}") - public AjaxResult remove(@PathVariable String[] stockinGuids) + @DeleteMapping("/{StockinGuids}") + public AjaxResult remove(@PathVariable String[] StockinGuids) { - return toAjax(inStockinService.deleteInStockinByStockinGuids(stockinGuids)); + return toAjax(inStockinService.deleteInStockinByStockinGuids(StockinGuids)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/IInStockinService.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/IInStockinService.java index fb5276c..45d7703 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/IInStockinService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockin/service/IInStockinService.java @@ -16,10 +16,10 @@ public interface IInStockinService /** * 查询入库单据 * - * @param stockinGuid 入库单据主键 + * @param StockinGuid 入库单据主键 * @return 入库单据 */ - public InStockin selectInStockinByStockinGuid(String stockinGuid); + public InStockin selectInStockinByStockinGuid(String StockinGuid); /** * 查询入库单据列表 @@ -48,18 +48,18 @@ public interface IInStockinService /** * 批量删除入库单据 * - * @param stockinGuids 需要删除的入库单据主键集合 + * @param StockinGuids 需要删除的入库单据主键集合 * @return 结果 */ - public int deleteInStockinByStockinGuids(String[] stockinGuids); + public int deleteInStockinByStockinGuids(String[] StockinGuids); /** * 删除入库单据信息 * - * @param stockinGuid 入库单据主键 + * @param StockinGuid 入库单据主键 * @return 结果 */ - public int deleteInStockinByStockinGuid(String stockinGuid); + public int deleteInStockinByStockinGuid(String StockinGuid); public List selectStockinByDetail(String stockinDetailId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/domain/InStockinDetail.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/domain/InStockinDetail.java index 3766448..fb71624 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/domain/InStockinDetail.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/domain/InStockinDetail.java @@ -134,6 +134,18 @@ public class InStockinDetail extends BaseEntity @Excel(name = "备用字段6") private String spare6; + /** 备用字段7 */ + @Excel(name = "备用字段7") + private String spare7; + + /** 备用字段8 */ + @Excel(name = "备用字段8") + private String spare8; + + /** 备用字段9 */ + @Excel(name = "备用字段9") + private String spare9; + private String status; private ExtraField extraField;