Compare commits
5 Commits
9f4369bcb2
...
8fd750a82f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8fd750a82f | ||
|
|
2790ed7ea1 | ||
|
|
1187038ba8 | ||
|
|
e2678fe7b4 | ||
|
|
c1b975cca0 |
@@ -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.util.object.BeanUtils;
|
||||
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.apilog.core.annotation.ApiAccessLog;
|
||||
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.service.MaterialBatchAssignService;
|
||||
|
||||
@Tag(name = "管理后台 - 物料批次分发")
|
||||
@RestController
|
||||
@RequestMapping("/qms/material-batch-assign")
|
||||
@RequestMapping("/qms/resource/material-batch-assign")
|
||||
@Validated
|
||||
@FileUploadController(source = "qms.materialbatchassign")
|
||||
public class MaterialBatchAssignController extends AbstractFileUploadController implements BusinessControllerMarker{
|
||||
@@ -94,6 +96,21 @@ public class MaterialBatchAssignController extends AbstractFileUploadController
|
||||
return success(BeanUtils.toBean(materialBatchAssign, MaterialBatchAssignRespVO.class));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/get-by-inf")
|
||||
@Operation(summary = "获得物料批次分发")
|
||||
@Parameter(name = "productId", description = "产品大类编号", required = true)
|
||||
// @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")
|
||||
@Operation(summary = "获得物料批次分发分页")
|
||||
@PreAuthorize("@ss.hasPermission('qms:material-batch-assign:query')")
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
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.MaterialBatchRespVO;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchSaveReqVO;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.*;
|
||||
import com.zt.plat.module.qms.resource.material.service.MaterialBatchAssignService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -37,11 +36,14 @@ import com.zt.plat.module.qms.resource.material.service.MaterialBatchService;
|
||||
|
||||
@Tag(name = "管理后台 - 物料批次")
|
||||
@RestController
|
||||
@RequestMapping("/qms/material-batch")
|
||||
@RequestMapping("/qms/resource/material-batch")
|
||||
@Validated
|
||||
@FileUploadController(source = "qms.materialbatch")
|
||||
public class MaterialBatchController extends AbstractFileUploadController implements BusinessControllerMarker{
|
||||
|
||||
@Resource
|
||||
private MaterialBatchAssignService materialBatchAssignService;
|
||||
|
||||
static {
|
||||
FileUploadController annotation = MaterialBatchController.class.getAnnotation(FileUploadController.class);
|
||||
if (annotation != null) {
|
||||
@@ -115,4 +117,10 @@ public class MaterialBatchController extends AbstractFileUploadController implem
|
||||
BeanUtils.toBean(list, MaterialBatchRespVO.class));
|
||||
}
|
||||
|
||||
@PostMapping("/assign")
|
||||
@Operation(summary = "物料分发")
|
||||
public CommonResult<MaterialBatchAssignRespVO> assign(@Valid @RequestBody MaterialBatchAssignSaveReqVO createReqVO) {
|
||||
return success(materialBatchAssignService.assignLab(createReqVO));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
package com.zt.plat.module.qms.resource.material.controller.admin;
|
||||
|
||||
import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import com.zt.plat.framework.business.annotation.FileUploadController;
|
||||
import com.zt.plat.framework.business.controller.AbstractFileUploadController;
|
||||
import com.zt.plat.framework.business.interceptor.BusinessControllerMarker;
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.excel.core.util.ExcelUtils;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.*;
|
||||
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryDO;
|
||||
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryInboundDetailDO;
|
||||
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialProductDO;
|
||||
import com.zt.plat.module.qms.resource.material.service.MaterialInventoryInboundDetailService;
|
||||
import com.zt.plat.module.qms.resource.material.service.MaterialInventoryService;
|
||||
import com.zt.plat.module.qms.resource.material.service.MaterialProductService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@Tag(name = "管理后台 - 入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等")
|
||||
@RestController
|
||||
@RequestMapping("/qms/resource/material-inventory")
|
||||
@Validated
|
||||
@FileUploadController(source = "qms.materiainfo")
|
||||
public class MaterialInventoryController extends AbstractFileUploadController implements BusinessControllerMarker {
|
||||
|
||||
static {
|
||||
FileUploadController annotation = MaterialInventoryController.class.getAnnotation(FileUploadController.class);
|
||||
if (annotation != null) {
|
||||
setFileUploadInfo(annotation);
|
||||
}
|
||||
}
|
||||
|
||||
@Resource
|
||||
private MaterialInventoryInboundDetailService materialInventoryInboundDetailService;
|
||||
|
||||
@Resource
|
||||
private MaterialInventoryService mterialInventoryService;
|
||||
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等")
|
||||
@PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:create')")
|
||||
public CommonResult<MaterialInventoryInboundDetailRespVO> createMaterialInventoryInboundDetail(@Valid @RequestBody MaterialInventoryInboundDetailSaveReqVO createReqVO) {
|
||||
return success(materialInventoryInboundDetailService.createMaterialInventoryInboundDetail(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等")
|
||||
@PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:update')")
|
||||
public CommonResult<Boolean> updateMaterialInventoryInboundDetail(@Valid @RequestBody MaterialInventoryInboundDetailSaveReqVO updateReqVO) {
|
||||
materialInventoryInboundDetailService.updateMaterialInventoryInboundDetail(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:delete')")
|
||||
public CommonResult<Boolean> deleteMaterialInventoryInboundDetail(@RequestParam("id") Long id) {
|
||||
materialInventoryInboundDetailService.deleteMaterialInventoryInboundDetail(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete-list")
|
||||
@Parameter(name = "ids", description = "编号", required = true)
|
||||
@Operation(summary = "批量删除入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等")
|
||||
@PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:delete')")
|
||||
public CommonResult<Boolean> deleteMaterialInventoryInboundDetailList(@RequestBody BatchDeleteReqVO req) {
|
||||
materialInventoryInboundDetailService.deleteMaterialInventoryInboundDetailListByIds(req.getIds());
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:query')")
|
||||
public CommonResult<MaterialInventoryInboundDetailRespVO> getMaterialInventoryInboundDetail(@RequestParam("id") Long id) {
|
||||
MaterialInventoryInboundDetailDO materialInventoryInboundDetail = materialInventoryInboundDetailService.getMaterialInventoryInboundDetail(id);
|
||||
return success(BeanUtils.toBean(materialInventoryInboundDetail, MaterialInventoryInboundDetailRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得库存明细")
|
||||
// @PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:query')")
|
||||
public CommonResult<PageResult<MaterialInventoryInboundDetailRespVO>> getMaterialInventoryPage(@Valid MaterialInventoryInboundDetailPageReqVO pageReqVO) {
|
||||
PageResult<MaterialInventoryInboundDetailDO> pageResult = materialInventoryInboundDetailService.getMaterialInventoryInboundDetailPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, MaterialInventoryInboundDetailRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportMaterialInventoryInboundDetailExcel(@Valid MaterialInventoryInboundDetailPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<MaterialInventoryInboundDetailDO> list = materialInventoryInboundDetailService.getMaterialInventoryInboundDetailPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等.xls", "数据", MaterialInventoryInboundDetailRespVO.class,
|
||||
BeanUtils.toBean(list, MaterialInventoryInboundDetailRespVO.class));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getList")
|
||||
@Operation(summary = "获得库存列表")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
public CommonResult<PageResult<MaterialInventoryRespVO>> getMaterialProduct(MaterialInventoryRespVO pageReqVO) {
|
||||
|
||||
PageResult<MaterialInventoryDO> pageResult = mterialInventoryService.getMaterialInventoryPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, MaterialInventoryRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/get_mtrl_inf")
|
||||
@Operation(summary = "获取实例列表")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
public CommonResult<PageResult<MaterialInventoryRespVO>> getInfomation(MaterialInventoryRespVO pageReqVO) {
|
||||
|
||||
PageResult<MaterialInventoryDO> pageResult = mterialInventoryService.getMaterialInventoryPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, MaterialInventoryRespVO.class));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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.MaterialInventoryInboundRespVO;
|
||||
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 jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -37,7 +38,7 @@ import com.zt.plat.module.qms.resource.material.service.MaterialInventoryInbound
|
||||
|
||||
@Tag(name = "管理后台 - 入库")
|
||||
@RestController
|
||||
@RequestMapping("/qms/material-inventory-inbound")
|
||||
@RequestMapping("/qms/resource/material-inventory-inbound")
|
||||
@Validated
|
||||
@FileUploadController(source = "qms.materialinventoryinbound")
|
||||
public class MaterialInventoryInboundController extends AbstractFileUploadController implements BusinessControllerMarker{
|
||||
@@ -115,4 +116,16 @@ public class MaterialInventoryInboundController extends AbstractFileUploadContro
|
||||
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,7 +37,7 @@ import com.zt.plat.module.qms.resource.material.service.MaterialInventoryInbound
|
||||
|
||||
@Tag(name = "管理后台 - 入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等")
|
||||
@RestController
|
||||
@RequestMapping("/qms/material-inventory-inbound-detail")
|
||||
@RequestMapping("/qms/resource/material-inventory-inbound-detail")
|
||||
@Validated
|
||||
@FileUploadController(source = "qms.materialinventoryinbounddetail")
|
||||
public class MaterialInventoryInboundDetailController extends AbstractFileUploadController implements BusinessControllerMarker{
|
||||
|
||||
@@ -37,4 +37,7 @@ public class MaterialBatchAssignPageReqVO extends PageParam {
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
@Schema(description = "实例ID")
|
||||
private String materialInfomationId;
|
||||
|
||||
}
|
||||
@@ -10,13 +10,13 @@ public class MaterialBatchAssignSaveReqVO {
|
||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15114")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "源批次ID", example = "23099")
|
||||
@Schema(description = "源批次ID",requiredMode = Schema.RequiredMode.REQUIRED, example = "23099")
|
||||
private Long batchId;
|
||||
|
||||
@Schema(description = "产品id", example = "10774")
|
||||
private String productId;
|
||||
|
||||
@Schema(description = "库房ID", example = "24720")
|
||||
@Schema(description = "库房ID",requiredMode = Schema.RequiredMode.REQUIRED, example = "24720")
|
||||
private Long warehouseId;
|
||||
|
||||
@Schema(description = "数量")
|
||||
|
||||
@@ -78,5 +78,8 @@ public class MaterialInfomationPageReqVO extends PageParam {
|
||||
@Schema(description = "大类ids")
|
||||
List<Long> productIds;
|
||||
|
||||
@Schema(description = "入库id")
|
||||
private long inventoryInboundId;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
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 lombok.*;
|
||||
|
||||
@@ -45,4 +46,19 @@ public class MaterialInventoryInboundDetailSaveReqVO {
|
||||
@Schema(description = "备注")
|
||||
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;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
@@ -51,4 +52,8 @@ public class MaterialInventoryInboundSaveReqVO {
|
||||
@Schema(description = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "详情",requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private MaterialInventoryInboundDetailSaveReqVO detail;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
package com.zt.plat.module.qms.resource.material.controller.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 库存列表分页 Request VO")
|
||||
@Data
|
||||
public class MaterialInventoryPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.AUTO, example = "32133")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "父id", example = "6098")
|
||||
private Long parentId;
|
||||
|
||||
@Schema(description = "id路径")
|
||||
private String idPath;
|
||||
|
||||
@Schema(description = "节点类型,分类|产品", example = "2")
|
||||
private String nodeType;
|
||||
|
||||
@Schema(description = "名称", example = "张三")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "其他配置")
|
||||
private String customConfig;
|
||||
|
||||
@Schema(description = "自定义表单")
|
||||
private String customForm;
|
||||
|
||||
@Schema(description = "扩展数据")
|
||||
private String customData;
|
||||
|
||||
@Schema(description = "标签")
|
||||
private String tag;
|
||||
|
||||
@Schema(description = "标签模板")
|
||||
private String labelTemplateKey;
|
||||
|
||||
@Schema(description = "型号")
|
||||
private String modelNo;
|
||||
|
||||
@Schema(description = "规格")
|
||||
private String specification;
|
||||
|
||||
@Schema(description = "技术参数")
|
||||
private String parameter;
|
||||
|
||||
@Schema(description = "制造商")
|
||||
private String manufacturer;
|
||||
|
||||
@Schema(description = "单位")
|
||||
private String unit;
|
||||
|
||||
@Schema(description = "允许按量领取")
|
||||
private String enablePartial;
|
||||
|
||||
@Schema(description = "保质期(天)")
|
||||
private Integer due;
|
||||
|
||||
@Schema(description = "开封后保质期是否变化")
|
||||
private String openDueFlag;
|
||||
|
||||
@Schema(description = "开封后保质期(天)")
|
||||
private Integer openDueAfter;
|
||||
|
||||
@Schema(description = "是否危险品")
|
||||
private String hazardous;
|
||||
|
||||
@Schema(description = "是否标准溶液")
|
||||
private String standardSolutionFlag;
|
||||
|
||||
@Schema(description = "是否标准物质")
|
||||
private String standardMaterialFlag;
|
||||
|
||||
@Schema(description = "复标周期,单位:天。小于等于0-不复标")
|
||||
private Integer reviewDue;
|
||||
|
||||
@Schema(description = "排序号")
|
||||
private Integer sortNo;
|
||||
|
||||
@Schema(description = "禁用")
|
||||
private String cancelFlag;
|
||||
|
||||
@Schema(description = "所属部门")
|
||||
private String systemDepartmentCode;
|
||||
|
||||
@Schema(description = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
package com.zt.plat.module.qms.resource.material.controller.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import com.zt.plat.module.qms.core.aspect.annotation.Dict;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - 库存列表 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class MaterialInventoryRespVO extends PageParam {
|
||||
|
||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "32133")
|
||||
@ExcelProperty("主键")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "父id", example = "6098")
|
||||
@ExcelProperty("父id")
|
||||
private Long parentId;
|
||||
|
||||
@Schema(description = "id路径")
|
||||
@ExcelProperty("id路径")
|
||||
private String idPath;
|
||||
|
||||
@Schema(description = "节点类型,分类|产品", example = "2")
|
||||
@ExcelProperty("节点类型,分类|产品")
|
||||
private String nodeType;
|
||||
|
||||
@Schema(description = "名称", example = "张三")
|
||||
@ExcelProperty("名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "其他配置")
|
||||
@ExcelProperty("其他配置")
|
||||
private String customConfig;
|
||||
|
||||
@Schema(description = "自定义表单")
|
||||
@ExcelProperty("自定义表单")
|
||||
private String customForm;
|
||||
|
||||
@Schema(description = "扩展数据")
|
||||
@ExcelProperty("扩展数据")
|
||||
private String customData;
|
||||
|
||||
@Schema(description = "标签")
|
||||
@ExcelProperty("标签")
|
||||
private String tag;
|
||||
|
||||
@Schema(description = "标签模板")
|
||||
@ExcelProperty("标签模板")
|
||||
private String labelTemplateKey;
|
||||
|
||||
@Schema(description = "型号")
|
||||
@ExcelProperty("型号")
|
||||
private String modelNo;
|
||||
|
||||
@Schema(description = "规格")
|
||||
@ExcelProperty("规格")
|
||||
private String specification;
|
||||
|
||||
@Schema(description = "技术参数")
|
||||
@ExcelProperty("技术参数")
|
||||
private String parameter;
|
||||
|
||||
@Schema(description = "制造商")
|
||||
@ExcelProperty("制造商")
|
||||
private String manufacturer;
|
||||
|
||||
@Schema(description = "单位")
|
||||
@ExcelProperty("单位")
|
||||
private String unit;
|
||||
|
||||
@Schema(description = "允许按量领取")
|
||||
@ExcelProperty("允许按量领取")
|
||||
@Dict(dicCode = "yes_or_no")
|
||||
private String enablePartial;
|
||||
|
||||
@Schema(description = "保质期(天)")
|
||||
@ExcelProperty("保质期(天)")
|
||||
private Integer due;
|
||||
|
||||
@Schema(description = "开封后保质期是否变化")
|
||||
@ExcelProperty("开封后保质期是否变化")
|
||||
@Dict(dicCode = "yes_or_no")
|
||||
private String openDueFlag;
|
||||
|
||||
@Schema(description = "开封后保质期(天)")
|
||||
@ExcelProperty("开封后保质期(天)")
|
||||
private Integer openDueAfter;
|
||||
|
||||
@Schema(description = "是否危险品")
|
||||
@ExcelProperty("是否危险品")
|
||||
@Dict(dicCode = "yes_or_no")
|
||||
private String hazardous;
|
||||
|
||||
@Schema(description = "是否标准溶液")
|
||||
@ExcelProperty("是否标准溶液")
|
||||
@Dict(dicCode = "yes_or_no")
|
||||
private String standardSolutionFlag;
|
||||
|
||||
@Schema(description = "是否标准物质")
|
||||
@ExcelProperty("是否标准物质")
|
||||
@Dict(dicCode = "yes_or_no")
|
||||
private String standardMaterialFlag;
|
||||
|
||||
@Schema(description = "复标周期,单位:天。小于等于0-不复标")
|
||||
@ExcelProperty("复标周期")
|
||||
private Integer reviewDue;
|
||||
|
||||
@Schema(description = "排序号")
|
||||
@ExcelProperty("排序号")
|
||||
private Integer sortNo;
|
||||
|
||||
@Schema(description = "禁用")
|
||||
@ExcelProperty("禁用")
|
||||
private String cancelFlag;
|
||||
|
||||
@Schema(description = "所属部门")
|
||||
@ExcelProperty("所属部门")
|
||||
private String systemDepartmentCode;
|
||||
|
||||
@Schema(description = "备注")
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 总数量
|
||||
*/
|
||||
@TableField("INB_QTY")
|
||||
@Schema(description = "库存总量")
|
||||
@ExcelProperty("库存总量")
|
||||
private Long inboundQuantity;
|
||||
|
||||
}
|
||||
@@ -47,7 +47,7 @@ public class MaterialBatchAssignDO extends BusinessBaseDO {
|
||||
* 数量
|
||||
*/
|
||||
@TableField("INB_QTY")
|
||||
private String inboundQuantity;
|
||||
private Long inboundQuantity;
|
||||
/**
|
||||
* 暂存位置记录
|
||||
*/
|
||||
@@ -64,4 +64,6 @@ public class MaterialBatchAssignDO extends BusinessBaseDO {
|
||||
@TableField("RMK")
|
||||
private String remark;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -121,4 +121,9 @@ public class MaterialInfomationDO extends BusinessBaseDO {
|
||||
@TableField("RMK")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 库存入库id
|
||||
*/
|
||||
@TableField("INVT_INB_ID")
|
||||
private long inventoryInboundId;
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
package com.zt.plat.module.qms.resource.material.dal.dataobject;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO;
|
||||
import lombok.*;
|
||||
|
||||
/**
|
||||
* 物料大类 DO
|
||||
*
|
||||
* @author 后台管理
|
||||
*/
|
||||
@TableName("t_mtrl_pdt")
|
||||
@KeySequence("t_mtrl_pdt_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
/**
|
||||
* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
|
||||
*/
|
||||
public class MaterialInventoryDO extends BusinessBaseDO {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
/**
|
||||
* 父id
|
||||
*/
|
||||
@TableField("PRN_ID")
|
||||
private Long parentId;
|
||||
/**
|
||||
* id路径
|
||||
*/
|
||||
@TableField("ID_PATH")
|
||||
private String idPath;
|
||||
/**
|
||||
* 节点类型,分类|产品
|
||||
*/
|
||||
@TableField("NDE_TP")
|
||||
private String nodeType;
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@TableField("NAME")
|
||||
private String name;
|
||||
/**
|
||||
* 其他配置
|
||||
*/
|
||||
@TableField("CST_CFG")
|
||||
private String customConfig;
|
||||
/**
|
||||
* 自定义表单
|
||||
*/
|
||||
@TableField("CST_FORM")
|
||||
private String customForm;
|
||||
/**
|
||||
* 扩展数据
|
||||
*/
|
||||
@TableField("CST_DAT")
|
||||
private String customData;
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
@TableField("TAG")
|
||||
private String tag;
|
||||
/**
|
||||
* 标签模板
|
||||
*/
|
||||
@TableField("LBL_TMPL_KY")
|
||||
private String labelTemplateKey;
|
||||
/**
|
||||
* 型号
|
||||
*/
|
||||
@TableField("MDL_NO")
|
||||
private String modelNo;
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
@TableField("SPEC")
|
||||
private String specification;
|
||||
/**
|
||||
* 技术参数
|
||||
*/
|
||||
@TableField("PRM")
|
||||
private String parameter;
|
||||
/**
|
||||
* 制造商
|
||||
*/
|
||||
@TableField("MFR")
|
||||
private String manufacturer;
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
@TableField("UNT")
|
||||
private String unit;
|
||||
/**
|
||||
* 允许按量领取,1-领用时输入量,按量领取;0-领用时不能输入量,整个领走
|
||||
*/
|
||||
@TableField("ENB_PRTL")
|
||||
private String enablePartial;
|
||||
/**
|
||||
* 保质期(天)
|
||||
*/
|
||||
@TableField("DUE")
|
||||
private Integer due;
|
||||
/**
|
||||
* 开封后保质期是否变化
|
||||
*/
|
||||
@TableField("OPN_DUE_FLG")
|
||||
private String openDueFlag;
|
||||
/**
|
||||
* 开封后保质期(天)
|
||||
*/
|
||||
@TableField("OPN_DUE_AFT")
|
||||
private Integer openDueAfter;
|
||||
/**
|
||||
* 是否危险品
|
||||
*/
|
||||
@TableField("HZRD")
|
||||
private String hazardous;
|
||||
/**
|
||||
* 是否标准溶液
|
||||
*/
|
||||
@TableField("STD_SOL_FLG")
|
||||
private String standardSolutionFlag;
|
||||
/**
|
||||
* 是否标准物质
|
||||
*/
|
||||
@TableField("STD_MTRL_FLG")
|
||||
private String standardMaterialFlag;
|
||||
/**
|
||||
* 复标周期,单位:天。小于等于0-不复标
|
||||
*/
|
||||
@TableField("RVW_DUE")
|
||||
private Integer reviewDue;
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@TableField("SRT_NO")
|
||||
private Integer sortNo;
|
||||
/**
|
||||
* 禁用
|
||||
*/
|
||||
@TableField("CNL_FLG")
|
||||
private String cancelFlag;
|
||||
/**
|
||||
* 所属部门
|
||||
*/
|
||||
@TableField("SYS_DEPT_CD")
|
||||
private String systemDepartmentCode;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@TableField("RMK")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 总数量
|
||||
*/
|
||||
@TableField("INB_QTY")
|
||||
private Long inboundQuantity;
|
||||
|
||||
}
|
||||
@@ -28,4 +28,10 @@ public interface MaterialBatchAssignMapper extends BaseMapperX<MaterialBatchAssi
|
||||
.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));
|
||||
}
|
||||
|
||||
default PageResult<MaterialInfomationDO> selectAll(MaterialInfomationPageReqVO reqVO) {
|
||||
reqVO.setPageSize(-1);
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialInfomationDO>()
|
||||
.eq(MaterialInfomationDO::getInventoryInboundId, reqVO.getInventoryInboundId()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.zt.plat.module.qms.resource.material.dal.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundPageReqVO;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryRespVO;
|
||||
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 入库 Mapper
|
||||
*
|
||||
* @author 后台管理
|
||||
*/
|
||||
@Mapper
|
||||
public interface MaterialInventoryMapper extends BaseMapperX<MaterialInventoryDO> {
|
||||
|
||||
// default PageResult<MaterialInventoryDO> selectPage(MaterialInventoryRespVO reqVO) {
|
||||
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialInventoryDO>()
|
||||
//
|
||||
// .eqIfPresent(MaterialInventoryDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
|
||||
// .eqIfPresent(MaterialInventoryDO::getRemark, reqVO.getRemark())
|
||||
// .betweenIfPresent(MaterialInventoryDO::getCreateTime, reqVO.getCreateTime())
|
||||
// .orderByDesc(MaterialInventoryDO::getId));
|
||||
// }
|
||||
|
||||
IPage<MaterialInventoryDO> selectPageList (IPage<?> page,@Param("param")MaterialInventoryRespVO RespVO);
|
||||
|
||||
}
|
||||
@@ -53,6 +53,14 @@ public interface MaterialBatchAssignService {
|
||||
*/
|
||||
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);
|
||||
|
||||
|
||||
/**
|
||||
* 分发到实验室
|
||||
* @param createReqVO
|
||||
* @return
|
||||
*/
|
||||
MaterialBatchAssignRespVO assignLab(@Valid MaterialBatchAssignSaveReqVO createReqVO);
|
||||
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.zt.plat.module.qms.resource.material.service;
|
||||
|
||||
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.MaterialBatchAssignRespVO;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchAssignSaveReqVO;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -84,9 +86,24 @@ public class MaterialBatchAssignServiceImpl implements MaterialBatchAssignServic
|
||||
return materialBatchAssignMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MaterialBatchAssignDO> getMaterialBatchAssignByInfId(MaterialBatchAssignPageReqVO pageReqVO){
|
||||
return materialBatchAssignMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MaterialBatchAssignDO> getMaterialBatchAssignPage(MaterialBatchAssignPageReqVO 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);
|
||||
|
||||
|
||||
/***
|
||||
* 批量入库/上架
|
||||
* @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;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
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.MaterialInventoryInboundSaveReqVO;
|
||||
import com.zt.plat.framework.common.exception.ErrorCode;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.*;
|
||||
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 jakarta.annotation.Resource;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.*;
|
||||
@@ -30,7 +36,16 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*;
|
||||
public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInboundService {
|
||||
|
||||
@Resource
|
||||
private MaterialInventoryInboundMapper materialInventoryInboundMapper;
|
||||
private MaterialInventoryInboundMapper materialInventoryInboundMapper;//入库
|
||||
|
||||
@Resource
|
||||
private MaterialInventoryInboundDetailMapper materialInventoryInboundDetailMapper;//入库明细
|
||||
|
||||
@Resource
|
||||
private MaterialInfomationMapper materialInfomationMapper;//物料实例
|
||||
|
||||
@Resource
|
||||
private MaterialBatchAssignMapper materialBatchAssignMapper;//批次分配
|
||||
|
||||
@Override
|
||||
public MaterialInventoryInboundRespVO createMaterialInventoryInbound(MaterialInventoryInboundSaveReqVO createReqVO) {
|
||||
@@ -59,12 +74,12 @@ public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInb
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteMaterialInventoryInboundListByIds(List<Long> ids) {
|
||||
public void deleteMaterialInventoryInboundListByIds(List<Long> ids) {
|
||||
// 校验存在
|
||||
validateMaterialInventoryInboundExists(ids);
|
||||
// 删除
|
||||
materialInventoryInboundMapper.deleteByIds(ids);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateMaterialInventoryInboundExists(List<Long> ids) {
|
||||
List<MaterialInventoryInboundDO> list = materialInventoryInboundMapper.selectByIds(ids);
|
||||
@@ -89,4 +104,85 @@ public class MaterialInventoryInboundServiceImpl implements MaterialInventoryInb
|
||||
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, "批次剩余量不足"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.zt.plat.module.qms.resource.material.service;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryPageReqVO;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryRespVO;
|
||||
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryDO;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 库存管理 Service 接口
|
||||
*
|
||||
* @author 后台管理
|
||||
*/
|
||||
public interface MaterialInventoryService {
|
||||
|
||||
|
||||
/**
|
||||
* 单个入库/上架
|
||||
*/
|
||||
PageResult<MaterialInventoryDO> getMaterialInventoryPage(MaterialInventoryRespVO pageReqVO);
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.zt.plat.module.qms.resource.material.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleEntrustRegistrationExtendRespVO;
|
||||
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO;
|
||||
import com.zt.plat.module.qms.enums.QmsCommonConstant;
|
||||
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryRespVO;
|
||||
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryDO;
|
||||
import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class MaterialInventoryServiceImpl implements MaterialInventoryService{
|
||||
@Resource
|
||||
private MaterialInventoryMapper materialInventoryMapper;
|
||||
|
||||
@Override
|
||||
public PageResult<MaterialInventoryDO> getMaterialInventoryPage(MaterialInventoryRespVO pageReqVO){
|
||||
IPage<MaterialInventoryDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||
|
||||
IPage<MaterialInventoryDO> pageList = materialInventoryMapper.selectPageList(page, pageReqVO);
|
||||
PageResult<MaterialInventoryDO> pageResult = new PageResult<>(pageList.getRecords(), pageList.getTotal());
|
||||
return BeanUtils.toBean(pageResult, MaterialInventoryDO.class);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryMapper">
|
||||
|
||||
<!-- 结果映射 -->
|
||||
<resultMap id="MaterialInventoryMap"
|
||||
type="com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryDO">
|
||||
<!-- 基础字段 -->
|
||||
<id column="id" property="id"/>
|
||||
<result column="CRT_ID" property="creator"/>
|
||||
<result column="CRT_NM" property="creatorName"/>
|
||||
<result column="CRT_IP" property="createIp"/>
|
||||
<result column="CRT_TM" property="createTime"/>
|
||||
<result column="UPD_ID" property="updater"/>
|
||||
<result column="UPD_NM" property="updaterName"/>
|
||||
<result column="UPD_IP" property="updateIp"/>
|
||||
<result column="UPD_TM" property="updateTime"/>
|
||||
<result column="DEL_FLG" property="deleted"/>
|
||||
|
||||
<!-- 业务字段 -->
|
||||
<result column="PRN_ID" property="parentId"/>
|
||||
<result column="ID_PATH" property="idPath"/>
|
||||
<result column="NDE_TP" property="nodeType"/>
|
||||
<result column="NAME" property="name"/>
|
||||
<result column="CST_CFG" property="customConfig"/>
|
||||
<result column="CST_FORM" property="customForm"/>
|
||||
<result column="CST_DAT" property="customData"/>
|
||||
<result column="TAG" property="tag"/>
|
||||
<result column="LBL_TMPL_KY" property="labelTemplateKey"/>
|
||||
<result column="MDL_NO" property="modelNo"/>
|
||||
<result column="SPEC" property="specification"/>
|
||||
<result column="PRM" property="parameter"/>
|
||||
<result column="MFR" property="manufacturer"/>
|
||||
<result column="UNT" property="unit"/>
|
||||
<result column="ENB_PRTL" property="enablePartial"/>
|
||||
<result column="DUE" property="due"/>
|
||||
<result column="OPN_DUE_FLG" property="openDueFlag"/>
|
||||
<result column="OPN_DUE_AFT" property="openDueAfter"/>
|
||||
<result column="HZRD" property="hazardous"/>
|
||||
<result column="STD_SOL_FLG" property="standardSolutionFlag"/>
|
||||
<result column="STD_MTRL_FLG" property="standardMaterialFlag"/>
|
||||
<result column="RVW_DUE" property="reviewDue"/>
|
||||
<result column="SRT_NO" property="sortNo"/>
|
||||
<result column="CNL_FLG" property="cancelFlag"/>
|
||||
<result column="SYS_DEPT_CD" property="systemDepartmentCode"/>
|
||||
<result column="RMK" property="remark"/>
|
||||
<result column="INB_QTY" property="inboundQuantity"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 查询数据库列表 -->
|
||||
<select id="selectPageList"
|
||||
resultMap="MaterialInventoryMap">
|
||||
SELECT
|
||||
PDT.id,
|
||||
PDT.PRN_ID,
|
||||
PDT.ID_PATH,
|
||||
PDT.NDE_TP,
|
||||
PDT.NAME,
|
||||
PDT.CST_CFG,
|
||||
PDT.CST_FORM,
|
||||
PDT.CST_DAT,
|
||||
PDT.TAG,
|
||||
PDT.LBL_TMPL_KY,
|
||||
PDT.MDL_NO,
|
||||
PDT.SPEC,
|
||||
PDT.PRM,
|
||||
PDT.MFR,
|
||||
PDT.UNT,
|
||||
PDT.ENB_PRTL,
|
||||
PDT.DUE,
|
||||
PDT.OPN_DUE_FLG,
|
||||
PDT.OPN_DUE_AFT,
|
||||
PDT.HZRD,
|
||||
PDT.STD_SOL_FLG,
|
||||
PDT.STD_MTRL_FLG,
|
||||
PDT.RVW_DUE,
|
||||
PDT.SRT_NO,
|
||||
PDT.CNL_FLG,
|
||||
PDT.SYS_DEPT_CD,
|
||||
PDT.RMK,
|
||||
ASN_SUM.INB_QTY_SUM AS INB_QTY
|
||||
FROM
|
||||
T_MTRL_PDT PDT
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
PDT_ID,
|
||||
SUM(INB_QTY) AS INB_QTY_SUM
|
||||
FROM T_MTRL_BAT_ASN
|
||||
WHERE DELETED = '0'
|
||||
GROUP BY PDT_ID
|
||||
) ASN_SUM ON PDT.id = ASN_SUM.PDT_ID
|
||||
<where>
|
||||
PDT.DELETED = '0'
|
||||
<if test="param != null and param.id != null">
|
||||
AND PDT.PRN_ID = #{param.id}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY PDT.id DESC
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user