From 20f2c73a654b8203e66a6cd6a70c6bbfd24f73d6 Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Thu, 22 May 2025 11:33:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=85=A5=E5=BA=93=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E5=8A=9F=E8=83=BD=20=E6=8E=A5=E6=94=B6=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E8=B4=A8=E6=A3=80=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bas/BasProduct/domain/BasProduct.java | 4 + .../mapper/InStockinDetailMapper.java | 19 +- .../service/IInStockinDetailService.java | 22 +- .../impl/InStockinDetailServiceImpl.java | 21 +- .../controller/ReceiveStockinController.java | 31 +- .../stockin/domain/vo/ReceiveProductVo.java | 5 + .../domain/vo/ReceiveStockCreateInVo.java | 14 + .../vo/ReceiveStockDetailQualityInsVo.java | 15 + .../domain/vo/ReceiveStockQualityInsVo.java | 21 + .../stockin/domain/vo/ReceiveStockVo.java | 6 +- .../stockin/mapper/ReceiveStockinMapper.java | 22 +- .../service/IReceiveStockinService.java | 10 + .../impl/ReceiveStockinServiceImpl.java | 119 +++- .../ReceiveStockinDetailController.java | 17 +- .../mapper/ReceiveStockinDetailMapper.java | 2 + .../service/IReceiveStockinDetailService.java | 32 +- .../impl/ReceiveStockinDetailServiceImpl.java | 44 +- .../mapper/in/InStockinDetailMapper.xml | 77 ++- .../receive/ReceiveStockinDetailMapper.xml | 14 +- .../mapper/receive/ReceiveStockinMapper.xml | 14 +- ruoyi-ui/src/api/receive/stockInDetail.js | 9 + ruoyi-ui/src/api/receive/stockin.js | 9 + ruoyi-ui/src/views/in/stockIn/index.vue | 23 +- ruoyi-ui/src/views/in/stockInDetail/index.vue | 521 --------------- .../src/views/receive/stockInDetail/index.vue | 521 --------------- .../src/views/receive/stockin/add/index.vue | 47 +- ruoyi-ui/src/views/receive/stockin/index.vue | 606 ++++++++++-------- 27 files changed, 826 insertions(+), 1419 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockCreateInVo.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockDetailQualityInsVo.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockQualityInsVo.java delete mode 100644 ruoyi-ui/src/views/in/stockInDetail/index.vue delete mode 100644 ruoyi-ui/src/views/receive/stockInDetail/index.vue diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/BasProduct/domain/BasProduct.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/BasProduct/domain/BasProduct.java index 4070b45..bd7ec16 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/bas/BasProduct/domain/BasProduct.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/BasProduct/domain/BasProduct.java @@ -78,5 +78,9 @@ public class BasProduct extends BaseEntity * 数量 */ private String quantity; + /** + * 批号 + */ + private String lotNo; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/mapper/InStockinDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/mapper/InStockinDetailMapper.java index 0a03588..bf7c4da 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/mapper/InStockinDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/mapper/InStockinDetailMapper.java @@ -2,18 +2,19 @@ package com.ruoyi.in.stockindetail.mapper; import java.util.List; import com.ruoyi.in.stockindetail.domain.InStockinDetail; +import org.apache.ibatis.annotations.Param; /** * 入库单据子表Mapper接口 - * + * * @author ruoyi * @date 2025-05-20 */ -public interface InStockinDetailMapper +public interface InStockinDetailMapper { /** * 查询入库单据子表 - * + * * @param stockinDetailId 入库单据子表主键 * @return 入库单据子表 */ @@ -21,7 +22,7 @@ public interface InStockinDetailMapper /** * 查询入库单据子表列表 - * + * * @param inStockinDetail 入库单据子表 * @return 入库单据子表集合 */ @@ -29,7 +30,7 @@ public interface InStockinDetailMapper /** * 新增入库单据子表 - * + * * @param inStockinDetail 入库单据子表 * @return 结果 */ @@ -37,7 +38,7 @@ public interface InStockinDetailMapper /** * 修改入库单据子表 - * + * * @param inStockinDetail 入库单据子表 * @return 结果 */ @@ -45,7 +46,7 @@ public interface InStockinDetailMapper /** * 删除入库单据子表 - * + * * @param stockinDetailId 入库单据子表主键 * @return 结果 */ @@ -53,9 +54,11 @@ public interface InStockinDetailMapper /** * 批量删除入库单据子表 - * + * * @param stockinDetailIds 需要删除的数据主键集合 * @return 结果 */ public int deleteInStockinDetailByStockinDetailIds(String[] stockinDetailIds); + + void insertInStockinDetailList(@Param("list") List inStockinDetailList); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/service/IInStockinDetailService.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/service/IInStockinDetailService.java index 3c4706b..9b25a22 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/service/IInStockinDetailService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/service/IInStockinDetailService.java @@ -5,15 +5,15 @@ import com.ruoyi.in.stockindetail.domain.InStockinDetail; /** * 入库单据子表Service接口 - * + * * @author ruoyi * @date 2025-05-20 */ -public interface IInStockinDetailService +public interface IInStockinDetailService { /** * 查询入库单据子表 - * + * * @param stockinDetailId 入库单据子表主键 * @return 入库单据子表 */ @@ -21,7 +21,7 @@ public interface IInStockinDetailService /** * 查询入库单据子表列表 - * + * * @param inStockinDetail 入库单据子表 * @return 入库单据子表集合 */ @@ -29,7 +29,7 @@ public interface IInStockinDetailService /** * 新增入库单据子表 - * + * * @param inStockinDetail 入库单据子表 * @return 结果 */ @@ -37,7 +37,7 @@ public interface IInStockinDetailService /** * 修改入库单据子表 - * + * * @param inStockinDetail 入库单据子表 * @return 结果 */ @@ -45,7 +45,7 @@ public interface IInStockinDetailService /** * 批量删除入库单据子表 - * + * * @param stockinDetailIds 需要删除的入库单据子表主键集合 * @return 结果 */ @@ -53,9 +53,15 @@ public interface IInStockinDetailService /** * 删除入库单据子表信息 - * + * * @param stockinDetailId 入库单据子表主键 * @return 结果 */ public int deleteInStockinDetailByStockinDetailId(String stockinDetailId); + + /** + * 批量插入入库子单 + * @param inStockinDetailList + */ + void insertInStockinDetailList(List inStockinDetailList); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/service/impl/InStockinDetailServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/service/impl/InStockinDetailServiceImpl.java index 83a7d0f..e4fe1a4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/service/impl/InStockinDetailServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/stockindetail/service/impl/InStockinDetailServiceImpl.java @@ -9,19 +9,19 @@ import com.ruoyi.in.stockindetail.service.IInStockinDetailService; /** * 入库单据子表Service业务层处理 - * + * * @author ruoyi * @date 2025-05-20 */ @Service -public class InStockinDetailServiceImpl implements IInStockinDetailService +public class InStockinDetailServiceImpl implements IInStockinDetailService { @Autowired private InStockinDetailMapper inStockinDetailMapper; /** * 查询入库单据子表 - * + * * @param stockinDetailId 入库单据子表主键 * @return 入库单据子表 */ @@ -33,7 +33,7 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService /** * 查询入库单据子表列表 - * + * * @param inStockinDetail 入库单据子表 * @return 入库单据子表 */ @@ -45,7 +45,7 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService /** * 新增入库单据子表 - * + * * @param inStockinDetail 入库单据子表 * @return 结果 */ @@ -57,7 +57,7 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService /** * 修改入库单据子表 - * + * * @param inStockinDetail 入库单据子表 * @return 结果 */ @@ -69,7 +69,7 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService /** * 批量删除入库单据子表 - * + * * @param stockinDetailIds 需要删除的入库单据子表主键 * @return 结果 */ @@ -81,7 +81,7 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService /** * 删除入库单据子表信息 - * + * * @param stockinDetailId 入库单据子表主键 * @return 结果 */ @@ -90,4 +90,9 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService { return inStockinDetailMapper.deleteInStockinDetailByStockinDetailId(stockinDetailId); } + + @Override + public void insertInStockinDetailList(List inStockinDetailList) { + inStockinDetailMapper.insertInStockinDetailList(inStockinDetailList); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/controller/ReceiveStockinController.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/controller/ReceiveStockinController.java index f0bd3c9..f741f39 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/controller/ReceiveStockinController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/controller/ReceiveStockinController.java @@ -3,20 +3,17 @@ package com.ruoyi.receive.stockin.controller; import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.receive.stockin.domain.vo.ReceiveProductVo; +import com.ruoyi.receive.stockin.domain.vo.ReceiveStockCreateInVo; +import com.ruoyi.receive.stockin.domain.vo.ReceiveStockQualityInsVo; import com.ruoyi.receive.stockin.domain.vo.ReceiveStockVo; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -81,11 +78,27 @@ public class ReceiveStockinController extends BaseController @PreAuthorize("@ss.hasPermi('receive:stockin:add')") @Log(title = "收货单据", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody ReceiveStockVo receiveStockin) + public AjaxResult add( @RequestBody @Valid ReceiveStockVo receiveStockin) { return receiveStockinService.insertReceiveStockin(receiveStockin); } + /** + * 新增入库单据 + * @param receiveStockin + * @return + */ + @PreAuthorize("@ss.hasPermi('receive:Stockin:createInStock')") + @Log(title = "新增入库单据", businessType = BusinessType.INSERT) + @PostMapping("/createStockin") + public AjaxResult createStockin(@RequestBody ReceiveStockCreateInVo receiveStockin) + { + return receiveStockinService.createStockin(receiveStockin); + } + + + + /** * 导入收货单据 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveProductVo.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveProductVo.java index 38ef29e..019e610 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveProductVo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveProductVo.java @@ -6,16 +6,21 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; +import javax.validation.constraints.NotEmpty; + @Data @AllArgsConstructor @NoArgsConstructor @ToString public class ReceiveProductVo { @Excel(name = "物料编码") + @NotEmpty(message = "物料GUID不能为空") private String productGuid; @Excel(name = "物料数量") + @NotEmpty(message = "物料数量不能为空") private String quantity; @Excel(name = "批次号") + @NotEmpty(message = "批次号不能为空") private String lotNo; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockCreateInVo.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockCreateInVo.java new file mode 100644 index 0000000..175aaec --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockCreateInVo.java @@ -0,0 +1,14 @@ +package com.ruoyi.receive.stockin.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ReceiveStockCreateInVo { + private List stockinGuidList; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockDetailQualityInsVo.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockDetailQualityInsVo.java new file mode 100644 index 0000000..6f5de84 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockDetailQualityInsVo.java @@ -0,0 +1,15 @@ +package com.ruoyi.receive.stockin.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ReceiveStockDetailQualityInsVo { + //子单据id + private String stockinDetailId; + //质检数量 + private String quantity; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockQualityInsVo.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockQualityInsVo.java new file mode 100644 index 0000000..22de5b3 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockQualityInsVo.java @@ -0,0 +1,21 @@ +package com.ruoyi.receive.stockin.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class ReceiveStockQualityInsVo { + + private String stockinGuid; + + private List list; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockVo.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockVo.java index 49fe2d3..276f698 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockVo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/domain/vo/ReceiveStockVo.java @@ -14,11 +14,11 @@ import java.util.List; @NoArgsConstructor @ToString public class ReceiveStockVo { - @NotBlank + @NotBlank(message = "仓库不能为空") private String warehouseId; - @NotBlank + @NotBlank(message = "供应商不能为空") private String supplierId; private String remark; - @NotEmpty + @NotEmpty(message = "商品不能为空") private List productVoList; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/mapper/ReceiveStockinMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/mapper/ReceiveStockinMapper.java index 2f77281..d861908 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/mapper/ReceiveStockinMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/mapper/ReceiveStockinMapper.java @@ -5,15 +5,15 @@ import com.ruoyi.receive.stockin.domain.ReceiveStockin; /** * 收货单据Mapper接口 - * + * * @author ruoyi * @date 2025-05-20 */ -public interface ReceiveStockinMapper +public interface ReceiveStockinMapper { /** * 查询收货单据 - * + * * @param stockinGuid 收货单据主键 * @return 收货单据 */ @@ -21,7 +21,7 @@ public interface ReceiveStockinMapper /** * 查询收货单据列表 - * + * * @param receiveStockin 收货单据 * @return 收货单据集合 */ @@ -29,7 +29,7 @@ public interface ReceiveStockinMapper /** * 新增收货单据 - * + * * @param receiveStockin 收货单据 * @return 结果 */ @@ -37,7 +37,7 @@ public interface ReceiveStockinMapper /** * 修改收货单据 - * + * * @param receiveStockin 收货单据 * @return 结果 */ @@ -45,7 +45,7 @@ public interface ReceiveStockinMapper /** * 删除收货单据 - * + * * @param stockinGuid 收货单据主键 * @return 结果 */ @@ -53,9 +53,15 @@ public interface ReceiveStockinMapper /** * 批量删除收货单据 - * + * * @param stockinGuids 需要删除的数据主键集合 * @return 结果 */ public int deleteReceiveStockinByStockinGuids(String[] stockinGuids); + + /** + * 插入历史表 + * @param receiveStockinGuid + */ + void insertReceiveStockinHistory(String receiveStockinGuid); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/service/IReceiveStockinService.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/service/IReceiveStockinService.java index 7029c77..f6eff47 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/service/IReceiveStockinService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/service/IReceiveStockinService.java @@ -5,6 +5,8 @@ import java.util.List; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.receive.stockin.domain.ReceiveStockin; import com.ruoyi.receive.stockin.domain.vo.ReceiveProductVo; +import com.ruoyi.receive.stockin.domain.vo.ReceiveStockCreateInVo; +import com.ruoyi.receive.stockin.domain.vo.ReceiveStockQualityInsVo; import com.ruoyi.receive.stockin.domain.vo.ReceiveStockVo; import org.springframework.web.multipart.MultipartFile; @@ -70,4 +72,12 @@ public interface IReceiveStockinService * @return */ AjaxResult analyseExportFile(List list ); + + /** + * 创建入库单据 + * @param receiveStockin + * @return + */ + AjaxResult createStockin(ReceiveStockCreateInVo receiveStockin); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/service/impl/ReceiveStockinServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/service/impl/ReceiveStockinServiceImpl.java index 6bf2bda..4ba4e19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/service/impl/ReceiveStockinServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockin/service/impl/ReceiveStockinServiceImpl.java @@ -1,21 +1,27 @@ package com.ruoyi.receive.stockin.service.impl; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import cn.hutool.Hutool; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import com.ruoyi.bas.BasProduct.domain.BasProduct; import com.ruoyi.bas.BasProduct.service.IBasProductService; +import com.ruoyi.bas.basJobId.service.IBasJobIdService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.uuid.IdUtils; -import com.ruoyi.receive.stockin.domain.vo.ReceiveProductVo; -import com.ruoyi.receive.stockin.domain.vo.ReceiveStockVo; +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.receive.stockin.domain.vo.*; import com.ruoyi.receive.stockindetail.domain.ReceiveStockinDetail; import com.ruoyi.receive.stockindetail.service.IReceiveStockinDetailService; import com.ruoyi.receive.stockindetail.service.impl.ReceiveStockinDetailServiceImpl; @@ -42,6 +48,12 @@ public class ReceiveStockinServiceImpl implements IReceiveStockinService private IReceiveStockinDetailService iReceiveStockinDetailService; @Autowired private IBasProductService iBasProductService; + @Autowired + private IInStockinDetailService iInStockinDetailService; + @Autowired + private IInStockinService inStockinServicel; + @Autowired + private IBasJobIdService iBasJobIdService; /** * 查询收货单据 @@ -90,9 +102,10 @@ public class ReceiveStockinServiceImpl implements IReceiveStockinService receiveStockin.setStockSource("1"); //receiveStockin.setSpare1(receiveStockVo.getBatchId()); receiveStockin.setCreateManId(Convert.toStr(SecurityUtils.getUserId())); - receiveStockin.setStockinId(IdUtil.fastSimpleUUID()); + receiveStockin.setStockinId(iBasJobIdService.getJobId("RED")); receiveStockin.setStatus("0"); receiveStockinMapper.insertReceiveStockin(receiveStockin); + int i = 1; for (ReceiveProductVo receiveProductVo : productVoList) { BasProduct basProduct = iBasProductService.selectBasProductByProductGuid(receiveProductVo.getProductGuid()); ReceiveStockinDetail receiveStockinDetail = new ReceiveStockinDetail(); @@ -101,7 +114,7 @@ public class ReceiveStockinServiceImpl implements IReceiveStockinService receiveStockinDetail.setProductId(basProduct.getProductId()); receiveStockinDetail.setStockinGuid(receiveStockin.getStockinGuid()); receiveStockinDetail.setStockinId(receiveStockin.getStockinId()); - receiveStockinDetail.setStockinDetailId(IdUtil.fastSimpleUUID()); + receiveStockinDetail.setStockinDetailId(receiveStockin.getStockinId()+"-"+i++); receiveStockinDetail.setUnit(basProduct.getUnit()); receiveStockinDetail.setSpec(basProduct.getSpec()); receiveStockinDetail.setSpare1(basProduct.getSpare1()); @@ -170,9 +183,107 @@ public class ReceiveStockinServiceImpl implements IReceiveStockinService for (BasProduct basProduct : result) { Optional first = list.stream().filter(x -> x.getProductGuid().equals(basProduct.getProductGuid())).findFirst(); first.ifPresent(receiveProductVo -> basProduct.setQuantity(receiveProductVo.getQuantity())); + first.ifPresent(receiveProductVo -> basProduct.setLotNo(receiveProductVo.getLotNo())); } return AjaxResult.success(result); } + /** + * 创建入库单据 + * @param receiveStockCreateInVo + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult createStockin(ReceiveStockCreateInVo receiveStockCreateInVo) { + try { + List stockinGuidList = receiveStockCreateInVo.getStockinGuidList(); + if (CollUtil.isNotEmpty(stockinGuidList)){ + for (String receiveStockinGuid : stockinGuidList) { + ReceiveStockin receiveStockin = selectReceiveStockinByStockinGuid(receiveStockinGuid); + ReceiveStockinDetail receiveStockinDetailParam = new ReceiveStockinDetail(); + receiveStockinDetailParam.setStockinGuid(receiveStockinGuid); + List list = iReceiveStockinDetailService.selectReceiveStockinDetailList(receiveStockinDetailParam); + if (CollUtil.isNotEmpty(list)){ + Optional first = list.stream().filter(x -> x.getStockStatus().equals("0")).findFirst(); + if (first.isPresent()){ + ReceiveStockinDetail receiveStockinDetail = first.get(); + return AjaxResult.error("编号:"+receiveStockinDetail.getProductId()+",未质检"); + } + + InStockin inStockin = getInStockinByReceiveStockin(receiveStockin); + //插入入库单据 + inStockinServicel.insertInStockin(inStockin); + List inStockinDetailList = getInStockinDetailByReceiveStockin(inStockin,list); + //插入入库单据详情 + iInStockinDetailService.insertInStockinDetailList(inStockinDetailList); + //修改单据状态 + receiveStockin.setStatus("1"); + receiveStockinMapper.updateReceiveStockin(receiveStockin); + //插入历史接收单据 + receiveStockinMapper.insertReceiveStockinHistory(receiveStockinGuid); + //插入历史接收单据子单详情 + iReceiveStockinDetailService.insertReceiveStockinDetailHistory(receiveStockinGuid); + //删除接收单据 + receiveStockinMapper.deleteReceiveStockinByStockinGuid(receiveStockinGuid); + //删除接收单据子单详情 + List receiveStockinDetailIdList = list.stream().map(ReceiveStockinDetail::getStockinDetailId).collect(Collectors.toList()); + iReceiveStockinDetailService.deleteReceiveStockinDetailByStockinDetailIds(Convert.toStrArray(receiveStockinDetailIdList)); + + } + } + } + + }catch (Exception e){ + throw new RuntimeException(e); + } + return AjaxResult.success(); + } + + + + /** + * 获取入库子单详情 + * + * @param inStockin + * @param list + * @return + */ + private List getInStockinDetailByReceiveStockin(InStockin inStockin, List list) { + if (CollUtil.isEmpty(list)){ + return null; + } + List inStockinDetailList = new ArrayList<>(); + int i = 1; + for (ReceiveStockinDetail receiveStockinDetail : list) { + InStockinDetail inStockinDetail = new InStockinDetail(); + BeanUtil.copyProperties(receiveStockinDetail,inStockinDetail); + inStockinDetail.setStockinGuid(inStockin.getStockinGuid()); + inStockinDetail.setStockinDetailId(inStockin.getStockinId()+"-"+i++); + inStockinDetail.setStockinId(inStockin.getStockinId()); + inStockinDetail.setStockStatus("0"); + inStockinDetailList.add(inStockinDetail); + } + return inStockinDetailList; + } + + /** + * 获取入库单据 + * @param receiveStockin + * @return + */ + private InStockin getInStockinByReceiveStockin(ReceiveStockin receiveStockin) { + if (receiveStockin == null) { + return null; + } + InStockin inStockin = new InStockin(); + BeanUtil.copyProperties(receiveStockin,inStockin ); + inStockin.setStockinGuid(IdUtil.fastSimpleUUID()); + inStockin.setStockinId(iBasJobIdService.getJobId("RKD")); + // 设置状态等默认值 + inStockin.setStatus("1"); + return inStockin; + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/controller/ReceiveStockinDetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/controller/ReceiveStockinDetailController.java index 17f3f7e..d0a3dc7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/controller/ReceiveStockinDetailController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/controller/ReceiveStockinDetailController.java @@ -2,6 +2,8 @@ package com.ruoyi.receive.stockindetail.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.receive.stockin.domain.vo.ReceiveStockQualityInsVo; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -23,7 +25,7 @@ import com.ruoyi.common.core.page.TableDataInfo; /** * 收货单据子单Controller - * + * * @author ruoyi * @date 2025-05-20 */ @@ -101,4 +103,17 @@ public class ReceiveStockinDetailController extends BaseController { return toAjax(receiveStockinDetailService.deleteReceiveStockinDetailByStockinDetailIds(stockinDetailIds)); } + + /** + * 质检收货子单据 + * @param receiveStockQualityInsVo + * @return + */ + @PreAuthorize("@ss.hasPermi('receive:stockInDetail:qualityInspection')") + @Log(title = "质检收货子单据", businessType = BusinessType.INSERT) + @PostMapping("/qualityInspection") + public AjaxResult qualityInspection(@RequestBody ReceiveStockQualityInsVo receiveStockQualityInsVo) + { + return receiveStockinDetailService.qualityInspection(receiveStockQualityInsVo); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/mapper/ReceiveStockinDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/mapper/ReceiveStockinDetailMapper.java index f3abbb6..8004a93 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/mapper/ReceiveStockinDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/mapper/ReceiveStockinDetailMapper.java @@ -58,4 +58,6 @@ public interface ReceiveStockinDetailMapper * @return 结果 */ public int deleteReceiveStockinDetailByStockinDetailIds(String[] stockinDetailIds); + + void insertReceiveStockinDetailHistory(String receiveStockinGuid); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/service/IReceiveStockinDetailService.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/service/IReceiveStockinDetailService.java index 55300d7..29af712 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/service/IReceiveStockinDetailService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/service/IReceiveStockinDetailService.java @@ -1,19 +1,22 @@ package com.ruoyi.receive.stockindetail.service; import java.util.List; + +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.receive.stockin.domain.vo.ReceiveStockQualityInsVo; import com.ruoyi.receive.stockindetail.domain.ReceiveStockinDetail; /** * 收货单据子单Service接口 - * + * * @author ruoyi * @date 2025-05-20 */ -public interface IReceiveStockinDetailService +public interface IReceiveStockinDetailService { /** * 查询收货单据子单 - * + * * @param stockinDetailId 收货单据子单主键 * @return 收货单据子单 */ @@ -21,7 +24,7 @@ public interface IReceiveStockinDetailService /** * 查询收货单据子单列表 - * + * * @param receiveStockinDetail 收货单据子单 * @return 收货单据子单集合 */ @@ -29,7 +32,7 @@ public interface IReceiveStockinDetailService /** * 新增收货单据子单 - * + * * @param receiveStockinDetail 收货单据子单 * @return 结果 */ @@ -37,7 +40,7 @@ public interface IReceiveStockinDetailService /** * 修改收货单据子单 - * + * * @param receiveStockinDetail 收货单据子单 * @return 结果 */ @@ -45,7 +48,7 @@ public interface IReceiveStockinDetailService /** * 批量删除收货单据子单 - * + * * @param stockinDetailIds 需要删除的收货单据子单主键集合 * @return 结果 */ @@ -53,9 +56,22 @@ public interface IReceiveStockinDetailService /** * 删除收货单据子单信息 - * + * * @param stockinDetailId 收货单据子单主键 * @return 结果 */ public int deleteReceiveStockinDetailByStockinDetailId(String stockinDetailId); + + /** + * 插入历史数据 + * @param receiveStockinGuid + */ + void insertReceiveStockinDetailHistory(String receiveStockinGuid); + + /** + * 质检收货子单据 + * @param receiveStockQualityInsVo + * @return + */ + AjaxResult qualityInspection(ReceiveStockQualityInsVo receiveStockQualityInsVo); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/service/impl/ReceiveStockinDetailServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/service/impl/ReceiveStockinDetailServiceImpl.java index 3c7ccea..761ad19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/service/impl/ReceiveStockinDetailServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/receive/stockindetail/service/impl/ReceiveStockinDetailServiceImpl.java @@ -1,27 +1,33 @@ package com.ruoyi.receive.stockindetail.service.impl; import java.util.List; + +import cn.hutool.core.collection.CollUtil; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.receive.stockin.domain.vo.ReceiveStockDetailQualityInsVo; +import com.ruoyi.receive.stockin.domain.vo.ReceiveStockQualityInsVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.receive.stockindetail.mapper.ReceiveStockinDetailMapper; import com.ruoyi.receive.stockindetail.domain.ReceiveStockinDetail; import com.ruoyi.receive.stockindetail.service.IReceiveStockinDetailService; +import org.springframework.transaction.annotation.Transactional; /** * 收货单据子单Service业务层处理 - * + * * @author ruoyi * @date 2025-05-20 */ @Service -public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailService +public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailService { @Autowired private ReceiveStockinDetailMapper receiveStockinDetailMapper; /** * 查询收货单据子单 - * + * * @param stockinDetailId 收货单据子单主键 * @return 收货单据子单 */ @@ -33,7 +39,7 @@ public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailSer /** * 查询收货单据子单列表 - * + * * @param receiveStockinDetail 收货单据子单 * @return 收货单据子单 */ @@ -45,7 +51,7 @@ public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailSer /** * 新增收货单据子单 - * + * * @param receiveStockinDetail 收货单据子单 * @return 结果 */ @@ -57,7 +63,7 @@ public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailSer /** * 修改收货单据子单 - * + * * @param receiveStockinDetail 收货单据子单 * @return 结果 */ @@ -69,7 +75,7 @@ public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailSer /** * 批量删除收货单据子单 - * + * * @param stockinDetailIds 需要删除的收货单据子单主键 * @return 结果 */ @@ -81,7 +87,7 @@ public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailSer /** * 删除收货单据子单信息 - * + * * @param stockinDetailId 收货单据子单主键 * @return 结果 */ @@ -90,4 +96,26 @@ public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailSer { return receiveStockinDetailMapper.deleteReceiveStockinDetailByStockinDetailId(stockinDetailId); } + + @Override + public void insertReceiveStockinDetailHistory(String receiveStockinGuid) { + receiveStockinDetailMapper.insertReceiveStockinDetailHistory(receiveStockinGuid); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult qualityInspection(ReceiveStockQualityInsVo receiveStockQualityInsVo) { + if (CollUtil.isEmpty(receiveStockQualityInsVo.getList())){ + return AjaxResult.error("请选择质检项"); + } + for (ReceiveStockDetailQualityInsVo receiveStockDetailQualityInsVo : receiveStockQualityInsVo.getList()) { + ReceiveStockinDetail receiveStockinDetail = selectReceiveStockinDetailByStockinDetailId(receiveStockDetailQualityInsVo.getStockinDetailId()); + if ("0".equals(receiveStockinDetail.getStockStatus())){ + receiveStockinDetail.setQuantity(receiveStockDetailQualityInsVo.getQuantity()); + receiveStockinDetail.setStockStatus("1"); + updateReceiveStockinDetail(receiveStockinDetail); + } + } + return AjaxResult.success(); + } } diff --git a/ruoyi-admin/src/main/resources/mapper/in/InStockinDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/in/InStockinDetailMapper.xml index d3fcfb6..06b0f12 100644 --- a/ruoyi-admin/src/main/resources/mapper/in/InStockinDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/in/InStockinDetailMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -40,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - + and stockin_guid = #{stockinGuid} and stockin_id = #{stockinId} and lot_no = #{lotNo} @@ -68,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and spare6 = #{spare6} - + - + and stockin_id = #{stockinId} and in_type = #{inType} and create_date = #{createDate} @@ -53,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and supplier_no = #{supplierNo} - +