diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/api/MachineApiController.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/api/MachineApiController.java index d8a07db..2434df1 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/api/MachineApiController.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/api/MachineApiController.java @@ -3,6 +3,7 @@ package org.dromara.wms.controller.api; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; +import org.dromara.wms.domain.vo.ProdInStockApiVo; import org.dromara.wms.domain.vo.WmsHppInStockDetailVo; import org.dromara.wms.domain.vo.WmsHppStorePlaceVo; import org.dromara.wms.domain.vo.WmsInventoryVo; @@ -58,5 +59,14 @@ public class MachineApiController extends BaseController { return R.ok(list); } + /** + * 生产入库接口 + * @param vo 入库详情 + */ + @PostMapping("/production/submitInstore") + public R productionSubmitInStoreInfo(@RequestBody ProdInStockApiVo vo) { + Boolean result = apiService.productionSubmitInStoreInfo(vo); + return result ? R.ok() : R.fail(); + } } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/ProdInStockApiVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/ProdInStockApiVo.java new file mode 100644 index 0000000..b1a22d3 --- /dev/null +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/ProdInStockApiVo.java @@ -0,0 +1,74 @@ +package org.dromara.wms.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + + +/** + * 生产入库接口对象 + * + * @author Yinq + * @date 2025-08-12 + */ +@Data +@ExcelIgnoreUnannotated +public class ProdInStockApiVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 租户id + */ + private String tenantId; + + /** + * 二次确认标识(0否 1是) + */ + private String secondConfirmFlag; + + /** + * 批次码(生产条码) + */ + private String batchCode; + + /** + * 工装架子号 + */ + private String shelfNo; + + /** + * 库位id + */ + private Long locationId; + + /** + * 品级编号(0合格 1不合格) + */ + private String gradeCode; + + /** + * 产品类别(0半成品 1成型) + */ + private String productCategory; + + /** + * 物料 + */ + private Long materialId; + + /** + * 入库数量 + */ + private BigDecimal instockNum; + + /** + * 载具ID + */ + private Long shelfId; + +} diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsPdaApiService.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsPdaApiService.java index 3a56e18..bad8e68 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsPdaApiService.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsPdaApiService.java @@ -68,4 +68,12 @@ public interface IWmsPdaApiService { WmsOutstockRecordVo setHppOutRecord(String code); int semiDeleteErrorCode(String code); + + /** + * 生产入库接口 + * @param vo + * @return + */ + Boolean productionSubmitInStoreInfo(ProdInStockApiVo vo); + } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPdaApiServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPdaApiServiceImpl.java index 14c57e1..b657799 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPdaApiServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPdaApiServiceImpl.java @@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.translation.annotation.Translation; import org.dromara.wms.domain.*; @@ -16,8 +18,10 @@ import org.dromara.wms.mapper.*; import org.dromara.wms.service.IWmsPdaApiService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.Date; import java.util.List; @RequiredArgsConstructor @@ -41,6 +45,7 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService { private final WmsOutstockDetailMapper wmsOutstockDetailMapper; private final BaseMaterialInfoMapper baseMaterialInfoMapper;//物料基础信息 private final WmsHppTransferMapper wmsHppTransferMapper; + private final WmsBaseLocationMapper wmsBaseLocationMapper; @Override public WmsOutstockRecordVo returnSelectCode(String code) { @@ -412,4 +417,79 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService { public int semiDeleteErrorCode(String code) { return apiMapper.semiDeleteErrorCode(code); } + + /** + * 生产入库接口 + * @param vo 入库详情 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean productionSubmitInStoreInfo(ProdInStockApiVo vo) { + Date nowDate = new Date(); + if (StringUtils.isEmpty(vo.getSecondConfirmFlag())){ + throw new ServiceException("二次确认标识为空!"); + } + String secondConfirmFlag = vo.getSecondConfirmFlag();// 二次确认标识(0否 1是) + Long locationId = vo.getLocationId() == null ? 3L : vo.getLocationId(); + Long warehouseId = 4L;//默认仓库 + BaseMaterialInfoVo materialInfoVo = baseMaterialInfoMapper.selectVoById(vo.getMaterialId()); + if (StringUtils.isNull(materialInfoVo)){ + throw new ServiceException("此物料不存在!"); + } + WmsInstockPrint print = new WmsInstockPrint(); + print.setBatchCode(vo.getBatchCode()); + print.setMaterialQty(1L); + print.setApportionQty(vo.getInstockNum()); + print.setMaterialId(vo.getMaterialId()); + print.setMaterialCode(materialInfoVo.getMaterialCode()); + print.setMaterialName(materialInfoVo.getMaterialName()); + print.setMaterialSpe(materialInfoVo.getMaterialSpec()); + print.setUnitName(materialInfoVo.getMaterialUnit()); + print.setMaterialCategoryId(materialInfoVo.getMaterialCategoryId()); + print.setCodeYesNo("1"); + print.setLocationId(locationId); + + if (secondConfirmFlag.equals("0")){ + print.setInboundStatus("1"); + print.setActualInboundTime(nowDate); + WmsInstockRecord record = new WmsInstockRecord(); + record.setBatchCode(vo.getBatchCode()); + record.setMaterialId(vo.getMaterialId()); + record.setWarehouseId(warehouseId); + WmsBaseLocationVo locationVo = wmsBaseLocationMapper.selectVoById(locationId); + if (locationVo == null){ + throw new ServiceException("此库位不存在!"); + } + record.setLocationCode(locationVo.getLocationCode()); + record.setMaterialCode(materialInfoVo.getMaterialCode()); + record.setMaterialName(materialInfoVo.getMaterialName()); + record.setInstockQty(vo.getInstockNum().doubleValue()); + record.setMaterialCategoryId(materialInfoVo.getMaterialCategoryId()); + wmsInstockRecordMapper.insert(record); + + // 查询 + WmsInventoryVo wmsInventoryVo = selectInVentoryByBatchCode(vo.getBatchCode(), locationVo.getLocationCode()); + if (wmsInventoryVo == null) { + // 插入库存 + WmsInventory inventory = new WmsInventory(); + BeanUtils.copyProperties(record, inventory); + inventory.setMaterialCategoryId(Long.valueOf(materialInfoVo.getMaterialCategoryId())); + inventory.setInventoryQty(vo.getInstockNum()); + inventory.setInventoryStatus("1"); + inventory.setStoreId(warehouseId); + inventory.setWarehouseId(warehouseId.toString()); + wmsInventoryMapper.insert(inventory); + } else { + WmsInventory inventory = new WmsInventory(); + inventory.setInventoryId(wmsInventoryVo.getInventoryId()); + inventory.setInventoryQty(wmsInventoryVo.getInventoryQty().add(vo.getInstockNum())); + wmsInventoryMapper.updateById(inventory); + } + wmsInstockPrintMapper.insert(print); + } else if (secondConfirmFlag.equals("1")){ + print.setInboundStatus("0"); + wmsInstockPrintMapper.insert(print); + } + return true; + } }