erp单据同步wms单据

This commit is contained in:
lsymicc
2025-12-08 17:32:24 +08:00
parent 05d2c7bbbc
commit 4e79dcb95f
7 changed files with 125 additions and 21 deletions

View File

@@ -60,6 +60,6 @@ public class ToErpApiController {
@PostMapping("/qqq") @PostMapping("/qqq")
public AjaxResult qqq() { public AjaxResult qqq() {
ErpStockinParam p=new ErpStockinParam(); ErpStockinParam p=new ErpStockinParam();
return toErpService.getStockinList(p); return toErpService.getErpStockinList(p);
} }
} }

View File

@@ -6,6 +6,8 @@ import com.ruoyi.bas.BasCustomer.domain.BasCustomer;
import com.ruoyi.bas.BasProduct.domain.BasProduct; import com.ruoyi.bas.BasProduct.domain.BasProduct;
import com.ruoyi.bas.BasSupplier.domain.BasSupplier; import com.ruoyi.bas.BasSupplier.domain.BasSupplier;
import com.ruoyi.common.core.domain.AjaxResult; 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; import java.util.Map;
@@ -32,5 +34,9 @@ public interface IToErpService {
AjaxResult receiveOutStockList(); AjaxResult receiveOutStockList();
AjaxResult getStockinList(ErpStockinParam erpStockinParam); AjaxResult getErpStockinList(ErpStockinParam erpStockinParam);
void AddStockinByErpStockin(ErpInStockin erpInStockin);
void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail);
} }

View File

@@ -2,6 +2,7 @@ package com.ruoyi.api.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; 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.ErpInStockin.service.IErpInStockinService;
import com.ruoyi.in.ErpInStockinDetail.domain.ErpInStockinDetail; import com.ruoyi.in.ErpInStockinDetail.domain.ErpInStockinDetail;
import com.ruoyi.in.ErpInStockinDetail.service.IErpInStockinDetailService; 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.ErpOutStock.domain.ErpOutStock;
import com.ruoyi.out.OutStockMiddle.domain.OutStockMiddle; import com.ruoyi.out.OutStockMiddle.domain.OutStockMiddle;
import com.ruoyi.out.ErpOutStockDetail.domain.ErpOutStockDetail; import com.ruoyi.out.ErpOutStockDetail.domain.ErpOutStockDetail;
@@ -40,6 +45,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -71,12 +77,22 @@ public class ToErpServiceImpl implements IToErpService {
@Autowired @Autowired
private IOutStockoutDetailService outStockoutDetailService; private IOutStockoutDetailService outStockoutDetailService;
//erp入库主单
@Autowired @Autowired
private IErpInStockinService erpInStockinService; private IErpInStockinService erpInStockinService;
//erp入库子单
@Autowired @Autowired
private IErpInStockinDetailService erpInStockinDetailService; private IErpInStockinDetailService erpInStockinDetailService;
//wms入库主单
@Autowired
private IInStockinService inStockinService;
//wms入库子单
@Autowired
private IInStockinDetailService inStockinDetailService;
@Autowired @Autowired
private IBasJobIdService basJobIdService; private IBasJobIdService basJobIdService;
@@ -421,7 +437,7 @@ public class ToErpServiceImpl implements IToErpService {
* @param erpStockinParam * @param erpStockinParam
* @return * @return
*/ */
public AjaxResult getStockinList(ErpStockinParam erpStockinParam){ public AjaxResult getErpStockinList(ErpStockinParam erpStockinParam){
erpStockinParam = new ErpStockinParam(); erpStockinParam = new ErpStockinParam();
@@ -463,7 +479,9 @@ public class ToErpServiceImpl implements IToErpService {
erpInStockin.setSysIcusIInheritIdIidI413(Convert.toStr(list.get(16))); erpInStockin.setSysIcusIInheritIdIidI413(Convert.toStr(list.get(16)));
erpInStockin.setSysIcusIInheritIdIidI414(Convert.toStr(list.get(17))); erpInStockin.setSysIcusIInheritIdIidI414(Convert.toStr(list.get(17)));
erpInStockin.setSysIcusIInheritIdIidI415(Convert.toStr(list.get(18))); 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()))) { if (ObjUtil.isNotNull(erpInStockinService.selectErpInStockinByKuin(erpInStockin.getKuin()))) {
@@ -472,6 +490,9 @@ public class ToErpServiceImpl implements IToErpService {
erpInStockinService.insertErpInStockin(erpInStockin); erpInStockinService.insertErpInStockin(erpInStockin);
} }
//更新wms主单
AddStockinByErpStockin(erpInStockin);
//======================================================================================================================================== //========================================================================================================================================
//根据主单【kuinlist】字段获取子单信息 //根据主单【kuinlist】字段获取子单信息
@@ -493,17 +514,18 @@ public class ToErpServiceImpl implements IToErpService {
erpInStockinDetail.setWarehousePositionID(0L);//货位 erpInStockinDetail.setWarehousePositionID(0L);//货位
erpInStockinDetail.setKu(0L);//库区 erpInStockinDetail.setKu(0L);//库区
erpInStockinDetail.setPh(Convert.toStr(details.get(17)));//批号 erpInStockinDetail.setPh(Convert.toStr(details.get(17)));//批号
erpInStockinDetail.setPh(Convert.toStr(details.get(18)));//序列号 erpInStockinDetail.setXlh(Convert.toStr(details.get(18)));//序列号
erpInStockinDetail.setPh(Convert.toStr(details.get(19)));//生产日期 erpInStockinDetail.setDatesc(Convert.toStr(details.get(19)));//生产日期
erpInStockinDetail.setPh(Convert.toStr(details.get(20)));//有效日期 erpInStockinDetail.setDateyx(Convert.toStr(details.get(20)));//有效日期
erpInStockinDetail.setPh(Convert.toStr(details.get(21)));//到货日期 erpInStockinDetail.setDate2(Convert.toStr(details.get(21)));//到货日期
erpInStockinDetail.setPh(Convert.toStr(details.get(29)));//装卸工 erpInStockinDetail.setSysIcusIInheritIdIidI1(Convert.toStr(details.get(29)));//装卸工
erpInStockinDetail.setSpare1(Convert.toStr(details.get(1)));//产品名称 - product_name erpInStockinDetail.setSpare1(Convert.toStr(details.get(1)));//产品名称 - product_name
erpInStockinDetail.setSpare2(Convert.toStr(details.get(2)));//产品型号 - product_id erpInStockinDetail.setSpare2(Convert.toStr(details.get(2)));//产品型号 - product_id
//关联主单 //关联主单
erpInStockinDetail.setKuin(erpInStockin.getKuin());//入库id erpInStockinDetail.setKuin(erpInStockin.getKuin());//入库id
erpInStockinDetail.setRkbh(erpInStockin.getRkbh());//入库编号 erpInStockinDetail.setRkbh(erpInStockin.getRkbh());//入库编号
erpInStockinDetail.setSpare3(erpInStockin.getStockinGuid());//入库单guid
//校验数据是否已经在表中 - 新增/更新 //校验数据是否已经在表中 - 新增/更新
if (ObjUtil.isNotNull(erpInStockinDetailService.selectErpInStockinDetailById(erpInStockinDetail.getId()))) { if (ObjUtil.isNotNull(erpInStockinDetailService.selectErpInStockinDetailById(erpInStockinDetail.getId()))) {
@@ -511,6 +533,9 @@ public class ToErpServiceImpl implements IToErpService {
}else{ }else{
erpInStockinDetailService.insertErpInStockinDetail(erpInStockinDetail); erpInStockinDetailService.insertErpInStockinDetail(erpInStockinDetail);
} }
//更新wms子单
AddStockinDetailByErpStockinDetail(erpInStockinDetail);
} }
}else { }else {
log.info("请求未获取子单详情【needList:0】"); log.info("请求未获取子单详情【needList:0】");
@@ -525,8 +550,65 @@ public class ToErpServiceImpl implements IToErpService {
return AjaxResult.success(); 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());
}
}
} }

View File

@@ -81,6 +81,10 @@ public class ErpInStockinDetail extends BaseEntity
* 产品型号 - product_id * 产品型号 - product_id
*/ */
private String spare2; private String spare2;
/**
* 主单guid
*/
private String spare3; private String spare3;
private String spare4; private String spare4;
private String spare5; private String spare5;

View File

@@ -75,10 +75,10 @@ public class InStockinController extends BaseController
* 获取入库单据详细信息 * 获取入库单据详细信息
*/ */
@PreAuthorize("@ss.hasPermi('in:stockIn:query')") @PreAuthorize("@ss.hasPermi('in:stockIn:query')")
@GetMapping(value = "/{stockinGuid}") @GetMapping(value = "/{StockinGuid}")
public AjaxResult getInfo(@PathVariable("stockinGuid") String 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')") @PreAuthorize("@ss.hasPermi('in:stockIn:remove')")
@Log(title = "入库单据", businessType = BusinessType.DELETE) @Log(title = "入库单据", businessType = BusinessType.DELETE)
@DeleteMapping("/{stockinGuids}") @DeleteMapping("/{StockinGuids}")
public AjaxResult remove(@PathVariable String[] stockinGuids) public AjaxResult remove(@PathVariable String[] StockinGuids)
{ {
return toAjax(inStockinService.deleteInStockinByStockinGuids(stockinGuids)); return toAjax(inStockinService.deleteInStockinByStockinGuids(StockinGuids));
} }
} }

View File

@@ -16,10 +16,10 @@ public interface IInStockinService
/** /**
* 查询入库单据 * 查询入库单据
* *
* @param stockinGuid 入库单据主键 * @param StockinGuid 入库单据主键
* @return 入库单据 * @return 入库单据
*/ */
public InStockin selectInStockinByStockinGuid(String stockinGuid); public InStockin selectInStockinByStockinGuid(String StockinGuid);
/** /**
* 查询入库单据列表 * 查询入库单据列表
@@ -48,18 +48,18 @@ public interface IInStockinService
/** /**
* 批量删除入库单据 * 批量删除入库单据
* *
* @param stockinGuids 需要删除的入库单据主键集合 * @param StockinGuids 需要删除的入库单据主键集合
* @return 结果 * @return 结果
*/ */
public int deleteInStockinByStockinGuids(String[] stockinGuids); public int deleteInStockinByStockinGuids(String[] StockinGuids);
/** /**
* 删除入库单据信息 * 删除入库单据信息
* *
* @param stockinGuid 入库单据主键 * @param StockinGuid 入库单据主键
* @return 结果 * @return 结果
*/ */
public int deleteInStockinByStockinGuid(String stockinGuid); public int deleteInStockinByStockinGuid(String StockinGuid);
public List<InStockin> selectStockinByDetail(String stockinDetailId); public List<InStockin> selectStockinByDetail(String stockinDetailId);
} }

View File

@@ -134,6 +134,18 @@ public class InStockinDetail extends BaseEntity
@Excel(name = "备用字段6") @Excel(name = "备用字段6")
private String spare6; 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 String status;
private ExtraField extraField; private ExtraField extraField;