feat:入库、批量入库
This commit is contained in:
@@ -26,18 +26,20 @@ import com.zt.plat.framework.common.pojo.PageResult;
|
|||||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||||
|
import static com.zt.plat.framework.common.pojo.CommonResult.error;
|
||||||
|
|
||||||
import com.zt.plat.framework.excel.core.util.ExcelUtils;
|
import com.zt.plat.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog;
|
import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog;
|
||||||
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*;
|
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||||
|
import static com.zt.plat.module.qms.enums.ErrorCodeConstants.MATERIAL_BATCH_ASSIGN_NOT_EXISTS;
|
||||||
|
|
||||||
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialBatchAssignDO;
|
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialBatchAssignDO;
|
||||||
import com.zt.plat.module.qms.resource.material.service.MaterialBatchAssignService;
|
import com.zt.plat.module.qms.resource.material.service.MaterialBatchAssignService;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 物料批次分发")
|
@Tag(name = "管理后台 - 物料批次分发")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/qms/material-batch-assign")
|
@RequestMapping("/qms/resource/material-batch-assign")
|
||||||
@Validated
|
@Validated
|
||||||
@FileUploadController(source = "qms.materialbatchassign")
|
@FileUploadController(source = "qms.materialbatchassign")
|
||||||
public class MaterialBatchAssignController extends AbstractFileUploadController implements BusinessControllerMarker{
|
public class MaterialBatchAssignController extends AbstractFileUploadController implements BusinessControllerMarker{
|
||||||
@@ -94,6 +96,21 @@ public class MaterialBatchAssignController extends AbstractFileUploadController
|
|||||||
return success(BeanUtils.toBean(materialBatchAssign, MaterialBatchAssignRespVO.class));
|
return success(BeanUtils.toBean(materialBatchAssign, MaterialBatchAssignRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/get-by-inf")
|
||||||
|
@Operation(summary = "获得物料批次分发")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
// @PreAuthorize("@ss.hasPermission('qms:material-batch-assign:query')")
|
||||||
|
public CommonResult<PageResult<MaterialBatchAssignRespVO>> getMaterialBatchAssignByInfiId(MaterialBatchAssignPageReqVO pageReqVO) {
|
||||||
|
|
||||||
|
if(pageReqVO.getMaterialInfomationId()==null||pageReqVO.getMaterialInfomationId().length()==0){
|
||||||
|
return error(MATERIAL_BATCH_ASSIGN_NOT_EXISTS,"示例编号不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
PageResult<MaterialBatchAssignDO> pageResult = materialBatchAssignService.getMaterialBatchAssignByInfId(pageReqVO);
|
||||||
|
return success(BeanUtils.toBean(pageResult, MaterialBatchAssignRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
@Operation(summary = "获得物料批次分发分页")
|
@Operation(summary = "获得物料批次分发分页")
|
||||||
@PreAuthorize("@ss.hasPermission('qms:material-batch-assign:query')")
|
@PreAuthorize("@ss.hasPermission('qms:material-batch-assign:query')")
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
package com.zt.plat.module.qms.resource.material.controller.admin;
|
package com.zt.plat.module.qms.resource.material.controller.admin;
|
||||||
|
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchPageReqVO;
|
import com.zt.plat.module.qms.resource.material.controller.vo.*;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchRespVO;
|
import com.zt.plat.module.qms.resource.material.service.MaterialBatchAssignService;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchSaveReqVO;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@@ -37,11 +36,14 @@ import com.zt.plat.module.qms.resource.material.service.MaterialBatchService;
|
|||||||
|
|
||||||
@Tag(name = "管理后台 - 物料批次")
|
@Tag(name = "管理后台 - 物料批次")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/qms/material-batch")
|
@RequestMapping("/qms/resource/material-batch")
|
||||||
@Validated
|
@Validated
|
||||||
@FileUploadController(source = "qms.materialbatch")
|
@FileUploadController(source = "qms.materialbatch")
|
||||||
public class MaterialBatchController extends AbstractFileUploadController implements BusinessControllerMarker{
|
public class MaterialBatchController extends AbstractFileUploadController implements BusinessControllerMarker{
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MaterialBatchAssignService materialBatchAssignService;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
FileUploadController annotation = MaterialBatchController.class.getAnnotation(FileUploadController.class);
|
FileUploadController annotation = MaterialBatchController.class.getAnnotation(FileUploadController.class);
|
||||||
if (annotation != null) {
|
if (annotation != null) {
|
||||||
@@ -115,4 +117,10 @@ public class MaterialBatchController extends AbstractFileUploadController implem
|
|||||||
BeanUtils.toBean(list, MaterialBatchRespVO.class));
|
BeanUtils.toBean(list, MaterialBatchRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/assign")
|
||||||
|
@Operation(summary = "物料分发")
|
||||||
|
public CommonResult<MaterialBatchAssignRespVO> assign(@Valid @RequestBody MaterialBatchAssignSaveReqVO createReqVO) {
|
||||||
|
return success(materialBatchAssignService.assignLab(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ package com.zt.plat.module.qms.resource.material.controller.admin;
|
|||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundPageReqVO;
|
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundPageReqVO;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundRespVO;
|
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundRespVO;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundSaveReqVO;
|
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundSaveReqVO;
|
||||||
|
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductRespVO;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@@ -37,7 +38,7 @@ import com.zt.plat.module.qms.resource.material.service.MaterialInventoryInbound
|
|||||||
|
|
||||||
@Tag(name = "管理后台 - 入库")
|
@Tag(name = "管理后台 - 入库")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/qms/material-inventory-inbound")
|
@RequestMapping("/qms/resource/material-inventory-inbound")
|
||||||
@Validated
|
@Validated
|
||||||
@FileUploadController(source = "qms.materialinventoryinbound")
|
@FileUploadController(source = "qms.materialinventoryinbound")
|
||||||
public class MaterialInventoryInboundController extends AbstractFileUploadController implements BusinessControllerMarker{
|
public class MaterialInventoryInboundController extends AbstractFileUploadController implements BusinessControllerMarker{
|
||||||
@@ -115,4 +116,16 @@ public class MaterialInventoryInboundController extends AbstractFileUploadContro
|
|||||||
BeanUtils.toBean(list, MaterialInventoryInboundRespVO.class));
|
BeanUtils.toBean(list, MaterialInventoryInboundRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/multi-put")
|
||||||
|
@Operation(summary = "批量上架")
|
||||||
|
public CommonResult<PageResult<MaterialInventoryInboundRespVO>> createMaterialInventoryInboundMulti(@Valid @RequestBody MaterialInventoryInboundSaveReqVO createReqVO) {
|
||||||
|
return success(materialInventoryInboundService.multiCreateMaterialInventoryInbound(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("single-put")
|
||||||
|
@Operation(summary = "单一上架")
|
||||||
|
public CommonResult<PageResult<MaterialInventoryInboundRespVO>> createMaterialInventoryInboundSingle(@Valid @RequestBody MaterialInventoryInboundSaveReqVO createReqVO) {
|
||||||
|
return success(materialInventoryInboundService.singleCreateMaterialInventoryInbound(createReqVO));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -37,4 +37,7 @@ public class MaterialBatchAssignPageReqVO extends PageParam {
|
|||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
private LocalDateTime[] createTime;
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
@Schema(description = "实例ID")
|
||||||
|
private String materialInfomationId;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -10,13 +10,13 @@ public class MaterialBatchAssignSaveReqVO {
|
|||||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15114")
|
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15114")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Schema(description = "源批次ID", example = "23099")
|
@Schema(description = "源批次ID",requiredMode = Schema.RequiredMode.REQUIRED, example = "23099")
|
||||||
private Long batchId;
|
private Long batchId;
|
||||||
|
|
||||||
@Schema(description = "产品id", example = "10774")
|
@Schema(description = "产品id", example = "10774")
|
||||||
private String productId;
|
private String productId;
|
||||||
|
|
||||||
@Schema(description = "库房ID", example = "24720")
|
@Schema(description = "库房ID",requiredMode = Schema.RequiredMode.REQUIRED, example = "24720")
|
||||||
private Long warehouseId;
|
private Long warehouseId;
|
||||||
|
|
||||||
@Schema(description = "数量")
|
@Schema(description = "数量")
|
||||||
|
|||||||
@@ -78,5 +78,8 @@ public class MaterialInfomationPageReqVO extends PageParam {
|
|||||||
@Schema(description = "大类ids")
|
@Schema(description = "大类ids")
|
||||||
List<Long> productIds;
|
List<Long> productIds;
|
||||||
|
|
||||||
|
@Schema(description = "入库id")
|
||||||
|
private long inventoryInboundId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.zt.plat.module.qms.resource.material.controller.vo;
|
package com.zt.plat.module.qms.resource.material.controller.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
@@ -45,4 +46,19 @@ public class MaterialInventoryInboundDetailSaveReqVO {
|
|||||||
@Schema(description = "备注")
|
@Schema(description = "备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
@Schema(description = "申请数量")
|
||||||
|
private Long quantity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 存放位置
|
||||||
|
*/
|
||||||
|
@TableField("LOC_ID")
|
||||||
|
private String locationId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料大类id
|
||||||
|
*/
|
||||||
|
@TableField("PDT_ID")
|
||||||
|
private Long productId;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.zt.plat.module.qms.resource.material.controller.vo;
|
package com.zt.plat.module.qms.resource.material.controller.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
@@ -51,4 +52,8 @@ public class MaterialInventoryInboundSaveReqVO {
|
|||||||
@Schema(description = "备注")
|
@Schema(description = "备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
@Schema(description = "详情",requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private MaterialInventoryInboundDetailSaveReqVO detail;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,7 @@ public class MaterialBatchAssignDO extends BusinessBaseDO {
|
|||||||
* 数量
|
* 数量
|
||||||
*/
|
*/
|
||||||
@TableField("INB_QTY")
|
@TableField("INB_QTY")
|
||||||
private String inboundQuantity;
|
private Long inboundQuantity;
|
||||||
/**
|
/**
|
||||||
* 暂存位置记录
|
* 暂存位置记录
|
||||||
*/
|
*/
|
||||||
@@ -64,4 +64,6 @@ public class MaterialBatchAssignDO extends BusinessBaseDO {
|
|||||||
@TableField("RMK")
|
@TableField("RMK")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -121,4 +121,9 @@ public class MaterialInfomationDO extends BusinessBaseDO {
|
|||||||
@TableField("RMK")
|
@TableField("RMK")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库存入库id
|
||||||
|
*/
|
||||||
|
@TableField("INVT_INB_ID")
|
||||||
|
private long inventoryInboundId;
|
||||||
}
|
}
|
||||||
@@ -28,4 +28,10 @@ public interface MaterialBatchAssignMapper extends BaseMapperX<MaterialBatchAssi
|
|||||||
.orderByDesc(MaterialBatchAssignDO::getId));
|
.orderByDesc(MaterialBatchAssignDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// default PageResult<MaterialBatchAssignDO> selectByInfId(MaterialBatchAssignPageReqVO reqVO) {
|
||||||
|
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialBatchAssignDO>()
|
||||||
|
// .eqIfPresent(MaterialBatchAssignDO::getMaterialInfomationId, reqVO.getMaterialInfomationId())
|
||||||
|
// .orderByDesc(MaterialBatchAssignDO::getCreateTime));
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -41,4 +41,12 @@ public interface MaterialInfomationMapper extends BaseMapperX<MaterialInfomation
|
|||||||
.orderByDesc(MaterialInfomationDO::getId));
|
.orderByDesc(MaterialInfomationDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default PageResult<MaterialInfomationDO> selectAll(MaterialInfomationPageReqVO reqVO) {
|
||||||
|
reqVO.setPageSize(-1);
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialInfomationDO>()
|
||||||
|
.eq(MaterialInfomationDO::getInventoryInboundId, reqVO.getInventoryInboundId()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -53,6 +53,14 @@ public interface MaterialBatchAssignService {
|
|||||||
*/
|
*/
|
||||||
MaterialBatchAssignDO getMaterialBatchAssign(Long id);
|
MaterialBatchAssignDO getMaterialBatchAssign(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用物料实例Id获得物料批次
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 物料批次分发
|
||||||
|
*/
|
||||||
|
public PageResult<MaterialBatchAssignDO> getMaterialBatchAssignByInfId(MaterialBatchAssignPageReqVO pageReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得物料批次分发分页
|
* 获得物料批次分发分页
|
||||||
*
|
*
|
||||||
@@ -61,4 +69,12 @@ public interface MaterialBatchAssignService {
|
|||||||
*/
|
*/
|
||||||
PageResult<MaterialBatchAssignDO> getMaterialBatchAssignPage(MaterialBatchAssignPageReqVO pageReqVO);
|
PageResult<MaterialBatchAssignDO> getMaterialBatchAssignPage(MaterialBatchAssignPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分发到实验室
|
||||||
|
* @param createReqVO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
MaterialBatchAssignRespVO assignLab(@Valid MaterialBatchAssignSaveReqVO createReqVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.zt.plat.module.qms.resource.material.service;
|
package com.zt.plat.module.qms.resource.material.service;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignPageReqVO;
|
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignPageReqVO;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignRespVO;
|
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignRespVO;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignSaveReqVO;
|
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignSaveReqVO;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@@ -84,9 +86,24 @@ public class MaterialBatchAssignServiceImpl implements MaterialBatchAssignServic
|
|||||||
return materialBatchAssignMapper.selectById(id);
|
return materialBatchAssignMapper.selectById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<MaterialBatchAssignDO> getMaterialBatchAssignByInfId(MaterialBatchAssignPageReqVO pageReqVO){
|
||||||
|
return materialBatchAssignMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<MaterialBatchAssignDO> getMaterialBatchAssignPage(MaterialBatchAssignPageReqVO pageReqVO) {
|
public PageResult<MaterialBatchAssignDO> getMaterialBatchAssignPage(MaterialBatchAssignPageReqVO pageReqVO) {
|
||||||
return materialBatchAssignMapper.selectPage(pageReqVO);
|
return materialBatchAssignMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MaterialBatchAssignRespVO assignLab(MaterialBatchAssignSaveReqVO createReqVO){
|
||||||
|
// 插入
|
||||||
|
MaterialBatchAssignDO materialBatchAssign = BeanUtils.toBean(createReqVO, MaterialBatchAssignDO.class);
|
||||||
|
materialBatchAssignMapper.insert(materialBatchAssign);
|
||||||
|
// 返回
|
||||||
|
return BeanUtils.toBean(materialBatchAssign, MaterialBatchAssignRespVO.class);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -61,4 +61,18 @@ public interface MaterialInventoryInboundService {
|
|||||||
*/
|
*/
|
||||||
PageResult<MaterialInventoryInboundDO> getMaterialInventoryInboundPage(MaterialInventoryInboundPageReqVO pageReqVO);
|
PageResult<MaterialInventoryInboundDO> getMaterialInventoryInboundPage(MaterialInventoryInboundPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 批量入库/上架
|
||||||
|
* @param createReqVO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
PageResult<MaterialInventoryInboundRespVO>multiCreateMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单个入库/上架
|
||||||
|
*/
|
||||||
|
PageResult<MaterialInventoryInboundRespVO>singleCreateMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,17 @@
|
|||||||
package com.zt.plat.module.qms.resource.material.service;
|
package com.zt.plat.module.qms.resource.material.service;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundPageReqVO;
|
import com.zt.plat.framework.common.exception.ErrorCode;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundRespVO;
|
import com.zt.plat.module.qms.resource.material.controller.vo.*;
|
||||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundSaveReqVO;
|
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialBatchAssignDO;
|
||||||
|
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInfomationDO;
|
||||||
|
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryInboundDetailDO;
|
||||||
|
import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialBatchAssignMapper;
|
||||||
|
import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInfomationMapper;
|
||||||
|
import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryInboundDetailMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -30,7 +36,16 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*;
|
|||||||
public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInboundService {
|
public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInboundService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MaterialInventoryInboundMapper materialInventoryInboundMapper;
|
private MaterialInventoryInboundMapper materialInventoryInboundMapper;//入库
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MaterialInventoryInboundDetailMapper materialInventoryInboundDetailMapper;//入库明细
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MaterialInfomationMapper materialInfomationMapper;//物料实例
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MaterialBatchAssignMapper materialBatchAssignMapper;//批次分配
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MaterialInventoryInboundRespVO createMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO) {
|
public MaterialInventoryInboundRespVO createMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO) {
|
||||||
@@ -89,4 +104,85 @@ public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInb
|
|||||||
return materialInventoryInboundMapper.selectPage(pageReqVO);
|
return materialInventoryInboundMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public PageResult<MaterialInventoryInboundRespVO> multiCreateMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO) {
|
||||||
|
MaterialInventoryInboundDetailSaveReqVO detail = createReqVO.getDetail();
|
||||||
|
|
||||||
|
//判断输入数量是否大于批次剩余数据
|
||||||
|
this.quantityCheck(detail);
|
||||||
|
//生成入库头数据
|
||||||
|
MaterialInventoryInboundDO materialInventoryInbound = BeanUtils.toBean(createReqVO, MaterialInventoryInboundDO.class);
|
||||||
|
materialInventoryInboundMapper.insert(materialInventoryInbound);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//根据入库数量创建实例数据
|
||||||
|
List<MaterialInfomationDO> MaterialInfomationDO = new ArrayList<MaterialInfomationDO>();
|
||||||
|
for (int i = 0; i < detail.getQuantity(); i++) {
|
||||||
|
MaterialInfomationDO materialInfomation = new MaterialInfomationDO();
|
||||||
|
materialInfomation.setBatchId(detail.getBatchAssignId());
|
||||||
|
materialInfomation.setLocationId(detail.getLocationId());
|
||||||
|
materialInfomation.setInventoryInboundId(materialInventoryInbound.getId());
|
||||||
|
materialInfomation.setProductId(detail.getProductId());
|
||||||
|
MaterialInfomationDO.add(materialInfomation);
|
||||||
|
}
|
||||||
|
|
||||||
|
materialInfomationMapper.insert(MaterialInfomationDO);
|
||||||
|
|
||||||
|
|
||||||
|
//根据实例数据创建入库明细
|
||||||
|
MaterialInfomationPageReqVO InfomationVO = new MaterialInfomationPageReqVO();
|
||||||
|
InfomationVO.setInventoryInboundId(materialInventoryInbound.getId());
|
||||||
|
PageResult<MaterialInfomationDO> InfomationList = materialInfomationMapper.selectPage(InfomationVO);
|
||||||
|
InfomationList.getList().forEach(item -> {
|
||||||
|
MaterialInventoryInboundDetailDO detailDO = new MaterialInventoryInboundDetailDO();
|
||||||
|
detailDO.setInboundId(materialInventoryInbound.getId());
|
||||||
|
detailDO.setMaterialInfomationId(item.getId());
|
||||||
|
detailDO.setInboundWay("批量入库");
|
||||||
|
materialInventoryInboundDetailMapper.insert(detailDO);
|
||||||
|
});
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<MaterialInventoryInboundRespVO> singleCreateMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO) {
|
||||||
|
|
||||||
|
MaterialInventoryInboundDetailSaveReqVO detail = createReqVO.getDetail();
|
||||||
|
|
||||||
|
//判断输入数量是否大于批次剩余数据
|
||||||
|
this.quantityCheck(detail);
|
||||||
|
//生成入库头数据
|
||||||
|
MaterialInventoryInboundDO materialInventoryInbound = BeanUtils.toBean(createReqVO, MaterialInventoryInboundDO.class);
|
||||||
|
materialInventoryInboundMapper.insert(materialInventoryInbound);
|
||||||
|
|
||||||
|
//根据实例数据创建入库明细
|
||||||
|
MaterialInfomationPageReqVO InfomationVO = new MaterialInfomationPageReqVO();
|
||||||
|
InfomationVO.setInventoryInboundId(materialInventoryInbound.getId());
|
||||||
|
PageResult<MaterialInfomationDO> InfomationList = materialInfomationMapper.selectPage(InfomationVO);
|
||||||
|
InfomationList.getList().forEach(item -> {
|
||||||
|
MaterialInventoryInboundDetailDO detailDO = new MaterialInventoryInboundDetailDO();
|
||||||
|
detailDO.setInboundId(materialInventoryInbound.getId());
|
||||||
|
detailDO.setMaterialInfomationId(item.getId());
|
||||||
|
detailDO.setInboundWay("采购入库");
|
||||||
|
materialInventoryInboundDetailMapper.insert(detailDO);
|
||||||
|
});
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void quantityCheck(MaterialInventoryInboundDetailSaveReqVO detail) {
|
||||||
|
if (detail.getBatchAssignId() == null || detail.getQuantity() == null) {
|
||||||
|
throw exception(MATERIAL_BATCH_ASSIGN_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
MaterialBatchAssignDO materialBatchAssignDO = materialBatchAssignMapper.selectById(detail.getBatchAssignId());
|
||||||
|
//判断输入数量是否大于批次剩余数据
|
||||||
|
if (materialBatchAssignDO.getInboundQuantity() < detail.getQuantity()) {
|
||||||
|
throw exception(new ErrorCode(1_032_150_000, "批次剩余量不足"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user