diff --git a/src/main/java/tech/riemann/ims/controller/platform/material/ApplyFormController.java b/src/main/java/tech/riemann/ims/controller/platform/material/ApplyFormController.java index 953fe45..e8ddfb6 100644 --- a/src/main/java/tech/riemann/ims/controller/platform/material/ApplyFormController.java +++ b/src/main/java/tech/riemann/ims/controller/platform/material/ApplyFormController.java @@ -8,15 +8,24 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.nutz.lang.Strings; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import tech.riemann.ims.dto.request.ApplyInfo; -import tech.riemann.ims.entity.Inventory.ApplyDetail; -import tech.riemann.ims.entity.Inventory.ApplyForm; +import tech.riemann.ims.entity.material.ApplyDetail; +import tech.riemann.ims.entity.material.ApplyForm; +import tech.riemann.ims.entity.material.Material; +import tech.riemann.ims.entity.material.MaterialStockDetail; +import tech.riemann.ims.enums.ApplyTypeEnum; +import tech.riemann.ims.enums.StockStatusEnum; import tech.riemann.ims.service.material.IApplyDetailService; import tech.riemann.ims.service.material.IApplyFormService; +import tech.riemann.ims.service.material.IMaterialService; +import tech.riemann.ims.service.material.IMaterialStockDetailService; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author mayong @@ -29,6 +38,8 @@ public class ApplyFormController { private final IApplyFormService applyFormService; private final IApplyDetailService applyDetailService; + private final IMaterialStockDetailService materialStockDetailService; + private final IMaterialService materialService; @GetMapping("apply") @Operation(summary = "分页查询申请单列表") @@ -55,15 +66,54 @@ public class ApplyFormController { } @PutMapping("apply") - @Operation(summary = "增加/编辑申请单") - public void saveOrUpdateApply(@Validated @Parameter(description = "申请单") @RequestBody ApplyInfo applyInfo) { - if (applyInfo.getApplyForm().getId() == null || applyInfo.getApplyForm().getId() <= 0) { - applyFormService.save(applyInfo.getApplyForm()); - applyInfo.getApplyDetails().forEach(detail -> detail.setApplyId(applyInfo.getApplyForm().getId())); - applyDetailService.saveBatch(applyInfo.getApplyDetails()); - } else { - // TODO 更新申请单 + @Operation(summary = "提交申请单") + @Transactional(rollbackFor = Exception.class) + public void saveApply(@Validated @Parameter(description = "申请单") @RequestBody ApplyInfo applyInfo) { + // 如果是采购入库 就新增数据,否则只改状态 + ApplyTypeEnum applyType = applyInfo.getApplyForm().getType(); + + // 校验物料数量 + Map confirmMap = applyInfo.getApplyDetails().stream() + .collect(Collectors.toMap(ApplyDetail::getMaterialId, ApplyDetail::getConfirmQuantity)); + Map dataMap = applyInfo.getDetailList().stream() + .collect(Collectors.groupingBy(MaterialStockDetail::getMaterialId, Collectors.counting())); + confirmMap.forEach((k, v) -> { + Long l = dataMap.get(k); + if(l == null || l.intValue() != v){ + throw new IllegalArgumentException("["+k+"]物料数量不匹配"); + } + }); + // 新增申请单 + applyFormService.save(applyInfo.getApplyForm()); + for (ApplyDetail applyDetail : applyInfo.getApplyDetails()) { + applyDetail.setApplyId(applyInfo.getApplyForm().getId()); + } + applyDetailService.saveBatch(applyInfo.getApplyDetails()); + + if (applyType == ApplyTypeEnum.PURCHASE_RECEIPT) { + // 新增物料 + applyInfo.getDetailList().forEach(detail -> { + detail.setApplyId(applyInfo.getApplyForm().getId()); + detail.setStatus(StockStatusEnum.IN); + }); + materialStockDetailService.saveBatch(applyInfo.getDetailList()); + //记录物料库存数据 + confirmMap.forEach((key, value) -> materialService.update(Wrappers.lambdaUpdate().set(Material::getStock, value) + .eq(Material::getId, key))); + } + else if(applyType == ApplyTypeEnum.LOAN_OUT || applyType == ApplyTypeEnum.RETURN_RECEIPT) { + //修改物料状态 + applyInfo.getDetailList().forEach(detail -> materialStockDetailService.update(Wrappers.lambdaUpdate() + .set(MaterialStockDetail::getMaterialId, applyType ==ApplyTypeEnum.RETURN_RECEIPT + ? StockStatusEnum.IN : StockStatusEnum.OUT) + .eq(MaterialStockDetail::getBarcode, detail.getBarcode()))); + //修改物料库存数据 + confirmMap.forEach((key, value) -> materialService.update(Wrappers.lambdaUpdate() + .setSql(applyType == ApplyTypeEnum.LOAN_OUT,"m_stock = m_stock - " + value) + .setSql(applyType == ApplyTypeEnum.RETURN_RECEIPT,"m_stock = m_stock + " + value) + .eq(Material::getId, key))); } } + } diff --git a/src/main/java/tech/riemann/ims/controller/platform/material/MaterialController.java b/src/main/java/tech/riemann/ims/controller/platform/material/MaterialController.java index 75e6a26..9f4f30d 100644 --- a/src/main/java/tech/riemann/ims/controller/platform/material/MaterialController.java +++ b/src/main/java/tech/riemann/ims/controller/platform/material/MaterialController.java @@ -13,7 +13,7 @@ import org.nutz.lang.random.R; import org.springframework.http.HttpStatus; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import tech.riemann.ims.entity.Inventory.Material; +import tech.riemann.ims.entity.material.Material; import tech.riemann.ims.service.material.IMaterialService; import java.util.List; diff --git a/src/main/java/tech/riemann/ims/dto/request/ApplyInfo.java b/src/main/java/tech/riemann/ims/dto/request/ApplyInfo.java index 7b39416..612c277 100644 --- a/src/main/java/tech/riemann/ims/dto/request/ApplyInfo.java +++ b/src/main/java/tech/riemann/ims/dto/request/ApplyInfo.java @@ -1,11 +1,13 @@ package tech.riemann.ims.dto.request; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import tech.riemann.ims.entity.Inventory.ApplyDetail; -import tech.riemann.ims.entity.Inventory.ApplyForm; +import tech.riemann.ims.entity.material.ApplyDetail; +import tech.riemann.ims.entity.material.ApplyForm; +import tech.riemann.ims.entity.material.MaterialStockDetail; import java.util.List; @@ -19,7 +21,13 @@ import java.util.List; @NoArgsConstructor public class ApplyInfo { + @Schema(description = "申请单") private ApplyForm applyForm; + + @Schema(description = "申请单明细") private List applyDetails; + @Schema(description = "扫码的条码集合") + private List detailList; + } diff --git a/src/main/java/tech/riemann/ims/entity/Inventory/ApplyForm.java b/src/main/java/tech/riemann/ims/entity/Inventory/ApplyForm.java deleted file mode 100644 index 9765e8d..0000000 --- a/src/main/java/tech/riemann/ims/entity/Inventory/ApplyForm.java +++ /dev/null @@ -1,74 +0,0 @@ -package tech.riemann.ims.entity.Inventory; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; -import lombok.experimental.FieldNameConstants; -import lombok.experimental.SuperBuilder; -import org.nutz.dao.entity.annotation.*; -import tech.riemann.ims.entity.IdBaseEntity; - -import java.io.Serial; -import java.util.Date; - -/** - * @author mayong - * @since 2024/11/26 16:53 - */ -@Data -@SuperBuilder -@NoArgsConstructor -@AllArgsConstructor -@FieldNameConstants -@EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) -@TableName("t_apply_form") -@Table("t_apply_form") -@Comment("入库/出库 申请单") -@Schema(name = "ApplyForm", description = "入库/出库 申请单") -public class ApplyForm extends IdBaseEntity { - - - @Serial - private static final long serialVersionUID = 1L; - - @Schema(description = "类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("af_type") - @Column("af_type") - @Comment("类型") - @ColDefine(type = ColType.INT) - private Integer type; // 1: 采购入库 2: 归还入库 3: 出库外借 - - @Schema(description = "申请人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("af_applicant") - @Column("af_applicant") - @Comment("申请人") - @ColDefine(notNull = false, width = 128, precision = 0) - private String applicant; - - @Schema(description = "申请日期", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("af_apply_date") - @Column("af_apply_date") - @Comment("申请日期") - @ColDefine(type = ColType.DATE, notNull = false, width = 128, precision = 0) - private Date applyDate; - - @Schema(description = "是否确认", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("af_is_confirm") - @Column("af_is_confirm") - @Comment("是否确认") - @ColDefine(type = ColType.BOOLEAN, notNull = false, width = 128, precision = 0) - private Boolean isConfirm; // 0: 未确认 1: 已确认 - - @Schema(description = "异常说明", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("af_remark") - @Column("af_remark") - @Comment("异常说明") - @ColDefine(type = ColType.TEXT, notNull = false, width = 128, precision = 0) - private String exceptionExplain; // 异常说明 -} diff --git a/src/main/java/tech/riemann/ims/entity/Inventory/Stocktaking.java b/src/main/java/tech/riemann/ims/entity/Inventory/Stocktaking.java deleted file mode 100644 index 97d2ab8..0000000 --- a/src/main/java/tech/riemann/ims/entity/Inventory/Stocktaking.java +++ /dev/null @@ -1,109 +0,0 @@ -package tech.riemann.ims.entity.Inventory; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; -import lombok.experimental.FieldNameConstants; -import lombok.experimental.SuperBuilder; -import org.nutz.dao.entity.annotation.*; -import tech.riemann.ims.entity.IdBaseEntity; - -import java.io.Serial; - -/** - * @author mayong - * @since 2024/11/26 17:51 - */ -@Data -@SuperBuilder -@NoArgsConstructor -@AllArgsConstructor -@FieldNameConstants -@EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) -@TableName("t_stocktaking") -@Table("t_stocktaking") -@Comment("盘点表") -@Schema(name = "Stocktaking", description = "盘点表") -public class Stocktaking extends IdBaseEntity { - - @Serial - private static final long serialVersionUID = 1L; - - @Schema(description = "盘点key", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_key") - @Column("s_key") - @Comment("盘点key") - @ColDefine(notNull = false, width = 128, precision = 0) - private String key; - - @Schema(description = "盘点类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_type") - @Column("s_type") - @Comment("盘点类型(0-全部盘点 1-部分盘点)") - @ColDefine(type = ColType.INT) - private Integer type; // 盘点类型 0-全部盘点 1-部分盘点 - - @Schema(description = "盘点日期", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_date") - @Column("s_date") - @Comment("盘点日期") - @ColDefine(notNull = false, width = 128, precision = 0) - private String date; - - @Schema(description = "盘点人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_operator") - @Column("s_operator") - @Comment("盘点人") - @ColDefine(notNull = false, width = 128, precision = 0) - private String operator; - - @Schema(description = "盘点审核人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_reviewer") - @Column("s_reviewer") - @Comment("盘点审核人") - @ColDefine(type = ColType.VARCHAR,notNull = false, width = 128, precision = 0) - private String reviewer; - - @Schema(description = "盘点任务状态", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_status") - @Column("s_status") - @Comment("盘点任务状态(0-未开始 1-进行中 2-已完成)") - @ColDefine(type = ColType.INT) - private Integer status; // 盘点任务状态 0-未开始 1-进行中 2-已完成 - - - @Schema(description = "盘点结果(系统自动生成)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_result") - @Column("s_result") - @Comment("盘点结果(系统自动生成)") - @ColDefine(notNull = false, width = 128, precision = 0) - private String result; - - @Schema(description = "盘点审核结果", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_review_result") - @Column("s_review_result") - @Comment("盘点审核结果(0-通过 1-不通过 2-待审核 3-退回重新盘点)") - @ColDefine(type = ColType.VARCHAR,notNull = false, width = 128, precision = 0) - private String reviewResult; // 盘点审核结果 0-通过 1-不通过 2-待审核 3-退回重新盘点 - - @Schema(description = "盘点异常情况说明", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_exception") - @Column("s_exception") - @Comment("盘点异常情况说明") - @ColDefine(type = ColType.VARCHAR,notNull = false, width = 128, precision = 0) - private String exception; - - @Schema(description = "异常情况处理方式", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("s_exception_handle") - @Column("s_exception_handle") - @Comment("异常情况处理方式(0-无需处理 1-忽略并修改库存 2-补充库存 3-其他)") - @ColDefine(type = ColType.VARCHAR,notNull = false, width = 128, precision = 0) - private String exceptionHandle; // 异常情况处理方式 0-无需处理 1-忽略并修改库存 2-补充库存 3-其他 - -} diff --git a/src/main/java/tech/riemann/ims/entity/Inventory/ApplyDetail.java b/src/main/java/tech/riemann/ims/entity/material/ApplyDetail.java similarity index 98% rename from src/main/java/tech/riemann/ims/entity/Inventory/ApplyDetail.java rename to src/main/java/tech/riemann/ims/entity/material/ApplyDetail.java index a5dcd38..c1cb652 100644 --- a/src/main/java/tech/riemann/ims/entity/Inventory/ApplyDetail.java +++ b/src/main/java/tech/riemann/ims/entity/material/ApplyDetail.java @@ -1,4 +1,4 @@ -package tech.riemann.ims.entity.Inventory; +package tech.riemann.ims.entity.material; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/src/main/java/tech/riemann/ims/entity/material/ApplyForm.java b/src/main/java/tech/riemann/ims/entity/material/ApplyForm.java new file mode 100644 index 0000000..745ecf2 --- /dev/null +++ b/src/main/java/tech/riemann/ims/entity/material/ApplyForm.java @@ -0,0 +1,116 @@ +package tech.riemann.ims.entity.material; + +import club.zhcs.lina.utils.enums.Codebook; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import lombok.experimental.FieldNameConstants; +import lombok.experimental.SuperBuilder; +import org.nutz.dao.entity.annotation.*; +import org.nutz.json.JsonField; +import tech.riemann.ims.entity.IdBaseEntity; +import tech.riemann.ims.enums.ApplyTypeEnum; +import tech.riemann.ims.enums.AuditTypeEnum; +import tech.riemann.ims.enums.HandleEnum; + +import java.io.Serial; +import java.time.LocalDateTime; +import java.util.Optional; + +/** + * @author mayong + * @since 2024/11/26 16:53 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@FieldNameConstants +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("t_apply_form") +@Table("t_apply_form") +@Comment("入库/出库/盘点 申请单") +@Schema(name = "ApplyForm", description = "入库/出库/盘点 申请单") +public class ApplyForm extends IdBaseEntity { + + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "类型(1: 采购入库申请 2: 归还入库申请 3: 出库外借申请 4: 盘点申请)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("af_type") + @Column("af_type") + @Comment("类型") + @ColDefine(type = ColType.INT) + private ApplyTypeEnum type; + + @Schema(description = "盘点类型(1: 全盘 2: 部分盘点)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("af_audit_type") + @Column("af_audit_type") + @Comment("盘点类型") + @ColDefine(type = ColType.INT) + private AuditTypeEnum auditType; + + @Schema(description = "申请人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("af_applicant") + @Column("af_applicant") + @Comment("申请人") + @ColDefine(notNull = false, width = 128, precision = 0) + private String applicant; + + @Schema(description = "申请日期", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("af_apply_date") + @Column("af_apply_date") + @Comment("申请日期") + @ColDefine(type = ColType.DATE, notNull = false, width = 128, precision = 0) + private LocalDateTime applyDate; + + @Schema(description = "是否确认(0: 未确认 1: 已确认)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("af_is_confirm") + @Column("af_is_confirm") + @Comment("是否确认") + @ColDefine(type = ColType.BOOLEAN, notNull = false, width = 128, precision = 0) + private Boolean isConfirm; + + @Schema(description = "结果(系统自动生成)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("af_result") + @Column("af_result") + @Comment("结果(系统自动生成)") + @ColDefine(notNull = false, width = 512, precision = 0) + private String result; + + @Schema(description = "异常原因", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("af_exception") + @Column("af_exception") + @Comment("异常原因") + @ColDefine(type = ColType.VARCHAR, notNull = false, width = 512, precision = 0) + private String exception; + + @Schema(description = "处理方式(0-无需处理 1-忽略并修改库存 2-补充库存 3-其他)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("s_exception_handle") + @Column("s_exception_handle") + @Comment("处理方式(0-无需处理 1-忽略并修改库存 2-补充库存 3-其他)") + @ColDefine(type = ColType.VARCHAR, notNull = false, width = 128, precision = 0) + private HandleEnum handle; + + @JsonField + public Codebook getTypeInfo() { + return Optional.of(getType()).orElse(ApplyTypeEnum.PURCHASE_RECEIPT).build(); + } + + @JsonField + public Codebook getAuditTypeInfo() { + return Optional.of(getAuditType()).orElse(AuditTypeEnum.ALL).build(); + } + + @JsonField + public Codebook getHandleInfo() { + return Optional.of(getHandle()).orElse(HandleEnum.NO_ACTION).build(); + } +} diff --git a/src/main/java/tech/riemann/ims/entity/Inventory/Material.java b/src/main/java/tech/riemann/ims/entity/material/Material.java similarity index 78% rename from src/main/java/tech/riemann/ims/entity/Inventory/Material.java rename to src/main/java/tech/riemann/ims/entity/material/Material.java index 938bfed..b0a2da4 100644 --- a/src/main/java/tech/riemann/ims/entity/Inventory/Material.java +++ b/src/main/java/tech/riemann/ims/entity/material/Material.java @@ -1,5 +1,6 @@ -package tech.riemann.ims.entity.Inventory; +package tech.riemann.ims.entity.material; +import club.zhcs.lina.utils.enums.Codebook; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; @@ -11,9 +12,12 @@ import lombok.experimental.Accessors; import lombok.experimental.FieldNameConstants; import lombok.experimental.SuperBuilder; import org.nutz.dao.entity.annotation.*; +import org.nutz.json.JsonField; import tech.riemann.ims.entity.IdBaseEntity; +import tech.riemann.ims.enums.AssignRuleEnum; import java.io.Serial; +import java.util.Optional; @Data @SuperBuilder @@ -45,12 +49,12 @@ public class Material extends IdBaseEntity { @ColDefine(notNull = false, width = 128, precision = 0) private String name; - @Schema(description = "赋码规则", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Schema(description = "赋码规则(0-低值易耗品(不参与赋码) 1-高价值工具类(参与唯一赋码)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @TableField("m_assign_rule") @Column("m_assign_rule") - @Comment("赋码规则(0-低值易耗品(不参与赋码) 1-高价值工具类(参与唯一赋码))") + @Comment("赋码规则") @ColDefine(notNull = false, type = ColType.INT) - private Integer assignRule; // 0-低值易耗品(不参与赋码) 1-高价值工具类(参与唯一赋码) + private AssignRuleEnum assignRule; // 0-低值易耗品(不参与赋码) 1-高价值工具类(参与唯一赋码) @Schema(description = "类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @TableField("m_type") @@ -81,4 +85,9 @@ public class Material extends IdBaseEntity { @ColDefine(notNull = false, width = 500, precision = 0) private String description; + @JsonField + public Codebook getAssignRuleInfo() { + return Optional.of(getAssignRule()).orElse(AssignRuleEnum.LOW_VALUE).build(); + } + } diff --git a/src/main/java/tech/riemann/ims/entity/Inventory/MaterialBarcodeConfig.java b/src/main/java/tech/riemann/ims/entity/material/MaterialBarcodeConfig.java similarity index 61% rename from src/main/java/tech/riemann/ims/entity/Inventory/MaterialBarcodeConfig.java rename to src/main/java/tech/riemann/ims/entity/material/MaterialBarcodeConfig.java index 6cdf996..f66e483 100644 --- a/src/main/java/tech/riemann/ims/entity/Inventory/MaterialBarcodeConfig.java +++ b/src/main/java/tech/riemann/ims/entity/material/MaterialBarcodeConfig.java @@ -1,8 +1,9 @@ -package tech.riemann.ims.entity.Inventory; +package tech.riemann.ims.entity.material; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -10,14 +11,20 @@ import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import lombok.experimental.FieldNameConstants; import lombok.experimental.SuperBuilder; -import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.entity.annotation.ColDefine; +import org.nutz.dao.entity.annotation.Column; +import org.nutz.dao.entity.annotation.Comment; +import org.nutz.dao.entity.annotation.Table; import tech.riemann.ims.entity.IdBaseEntity; import java.io.Serial; /** - * @author mayong - * @since 2024/11/26 16:39 + * 物料库条码配置表 + * + * @author mayong) + * + * @since 2024-12-06 10:32:29 */ @Data @SuperBuilder @@ -30,23 +37,22 @@ import java.io.Serial; @Table("t_material_barcode_config") @Comment("物料库条码配置表") @Schema(name = "MaterialBarcodeConfig", description = "物料库条码配置表") -public class MaterialBarcodeConfig extends IdBaseEntity { +public class MaterialBarcodeConfig extends IdBaseEntity{ @Serial private static final long serialVersionUID = 1L; - @Schema(description = "物料Key", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Schema(description = "物料Key", requiredMode = RequiredMode.NOT_REQUIRED) @TableField("mbc_material_key") @Column("mbc_material_key") @Comment("物料Key") @ColDefine(notNull = false, width = 128, precision = 0) - private String materialKey; + private String mbcMaterialKey; - - @Schema(description = "最新编码位置", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Schema(description = "最新编码位置", requiredMode = RequiredMode.NOT_REQUIRED) @TableField("mbc_latest_location") @Column("mbc_latest_location") @Comment("最新编码位置") - @ColDefine(notNull = false, type = ColType.INT) - private Integer latestLocation; -} + @ColDefine(notNull = false, width = 19, precision = 0) + private Long mbcLatestLocation; +} \ No newline at end of file diff --git a/src/main/java/tech/riemann/ims/entity/Inventory/MaterialStockDetail.java b/src/main/java/tech/riemann/ims/entity/material/MaterialStockDetail.java similarity index 53% rename from src/main/java/tech/riemann/ims/entity/Inventory/MaterialStockDetail.java rename to src/main/java/tech/riemann/ims/entity/material/MaterialStockDetail.java index 7f0243d..f7cca46 100644 --- a/src/main/java/tech/riemann/ims/entity/Inventory/MaterialStockDetail.java +++ b/src/main/java/tech/riemann/ims/entity/material/MaterialStockDetail.java @@ -1,8 +1,10 @@ -package tech.riemann.ims.entity.Inventory; +package tech.riemann.ims.entity.material; +import club.zhcs.lina.utils.enums.Codebook; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -14,13 +16,19 @@ import org.nutz.dao.entity.annotation.ColDefine; import org.nutz.dao.entity.annotation.Column; import org.nutz.dao.entity.annotation.Comment; import org.nutz.dao.entity.annotation.Table; +import org.nutz.json.JsonField; import tech.riemann.ims.entity.IdBaseEntity; +import tech.riemann.ims.enums.StockStatusEnum; import java.io.Serial; +import java.util.Optional; /** - * @author mayong - * @since 2024/11/26 17:21 + * 物料明细数据表 + * + * @author mayong) + * + * @since 2024-12-06 10:32:29 */ @Data @SuperBuilder @@ -33,31 +41,41 @@ import java.io.Serial; @Table("t_material_stock_detail") @Comment("物料明细数据表") @Schema(name = "MaterialStockDetail", description = "物料明细数据表") -public class MaterialStockDetail extends IdBaseEntity { +public class MaterialStockDetail extends IdBaseEntity{ @Serial private static final long serialVersionUID = 1L; - @Schema(description = "物料Key", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @TableField("msd_material_key") - @Column("msd_material_key") - @Comment("物料Key") - @ColDefine(notNull = false, width = 128, precision = 0) - private String materialKey; + @Schema(description = "物料ID", requiredMode = RequiredMode.NOT_REQUIRED) + @TableField("msd_material_id") + @Column("msd_material_id") + @Comment("物料ID") + @ColDefine(notNull = false) + private Long materialId; - @Schema(description = "条码", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Schema(description = "条码", requiredMode = RequiredMode.NOT_REQUIRED) @TableField("msd_barcode") @Column("msd_barcode") @Comment("条码") @ColDefine(notNull = false, width = 128, precision = 0) private String barcode; - @Schema(description = "状态", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Schema(description = "入库申请单", requiredMode = RequiredMode.NOT_REQUIRED) + @TableField("msd_apply_id") + @Column("msd_apply_id") + @Comment("入库申请单") + @ColDefine(notNull = false) + private Long applyId; + + @Schema(description = "状态", requiredMode = RequiredMode.NOT_REQUIRED) @TableField("msd_status") @Column("msd_status") @Comment("状态") @ColDefine(notNull = false, width = 128, precision = 0) - private String status; // 状态 0-在库 1-外借 2-报废 + private StockStatusEnum status; - -} + @JsonField + public Codebook getStatusInfo() { + return Optional.of(getStatus()).orElse(StockStatusEnum.IN).build(); + } +} \ No newline at end of file diff --git a/src/main/java/tech/riemann/ims/entity/material/StocktakingAudit.java b/src/main/java/tech/riemann/ims/entity/material/StocktakingAudit.java new file mode 100644 index 0000000..6c997d2 --- /dev/null +++ b/src/main/java/tech/riemann/ims/entity/material/StocktakingAudit.java @@ -0,0 +1,65 @@ +package tech.riemann.ims.entity.material; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import lombok.experimental.FieldNameConstants; +import lombok.experimental.SuperBuilder; +import org.nutz.dao.entity.annotation.ColDefine; +import org.nutz.dao.entity.annotation.Column; +import org.nutz.dao.entity.annotation.Comment; +import org.nutz.dao.entity.annotation.Table; +import tech.riemann.ims.entity.IdBaseEntity; + +import java.io.Serial; + +/** + * 盘点审核表 + * + * @author mayong) + * + * @since 2024-12-06 10:32:29 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@FieldNameConstants +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("t_stocktaking_audit") +@Table("t_stocktaking_audit") +@Comment("盘点审核表") +@Schema(name = "StocktakingAudit", description = "盘点审核表") +public class StocktakingAudit extends IdBaseEntity{ + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "申请单id", requiredMode = RequiredMode.NOT_REQUIRED) + @TableField("s_apply_id") + @Column("s_apply_id") + @Comment("申请单id") + @ColDefine(notNull = false, width = 10, precision = 0) + private Integer applyId; + + @Schema(description = "盘点审核人", requiredMode = RequiredMode.NOT_REQUIRED) + @TableField("s_reviewer") + @Column("s_reviewer") + @Comment("盘点审核人") + @ColDefine(notNull = false, width = 128, precision = 0) + private String reviewer; + + @Schema(description = "盘点审核结果(0-通过 1-不通过 2-待审核 3-退回重新盘点)", requiredMode = RequiredMode.NOT_REQUIRED) + @TableField("s_review_result") + @Column("s_review_result") + @Comment("盘点审核结果(0-通过 1-不通过 2-待审核 3-退回重新盘点)") + @ColDefine(notNull = false, width = 128, precision = 0) + private String reviewResult; +} \ No newline at end of file diff --git a/src/main/java/tech/riemann/ims/enums/ApplyTypeEnum.java b/src/main/java/tech/riemann/ims/enums/ApplyTypeEnum.java new file mode 100644 index 0000000..4b765cc --- /dev/null +++ b/src/main/java/tech/riemann/ims/enums/ApplyTypeEnum.java @@ -0,0 +1,25 @@ +package tech.riemann.ims.enums; + +import club.zhcs.lina.utils.enums.ICodeBook; +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author mayong + * @since 2024/12/6 9:26 + */ +@Getter +@AllArgsConstructor +public enum ApplyTypeEnum implements ICodeBook { + + PURCHASE_RECEIPT("1", "采购入库申请"), + RETURN_RECEIPT("2", "归还入库申请"), + LOAN_OUT("3", "外借出库申请"), + AUDIT("4", "盘点申请"), + ; + + @EnumValue + final String code; + final String description; +} diff --git a/src/main/java/tech/riemann/ims/enums/AssignRuleEnum.java b/src/main/java/tech/riemann/ims/enums/AssignRuleEnum.java new file mode 100644 index 0000000..27a998f --- /dev/null +++ b/src/main/java/tech/riemann/ims/enums/AssignRuleEnum.java @@ -0,0 +1,21 @@ +package tech.riemann.ims.enums; + +import club.zhcs.lina.utils.enums.ICodeBook; +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author mayong + * @since 2024/12/6 9:15 + */ +@Getter +@AllArgsConstructor +public enum AssignRuleEnum implements ICodeBook { + LOW_VALUE("0", "低值易耗品(不参与赋码)"), + HIGH_VALUE("1", "高价值工具类(参与唯一赋码)"); + + @EnumValue + final String code; + final String description; +} diff --git a/src/main/java/tech/riemann/ims/enums/AuditTypeEnum.java b/src/main/java/tech/riemann/ims/enums/AuditTypeEnum.java new file mode 100644 index 0000000..b4d201e --- /dev/null +++ b/src/main/java/tech/riemann/ims/enums/AuditTypeEnum.java @@ -0,0 +1,23 @@ +package tech.riemann.ims.enums; + +import club.zhcs.lina.utils.enums.ICodeBook; +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author mayong + * @since 2024/12/6 9:26 + */ +@Getter +@AllArgsConstructor +public enum AuditTypeEnum implements ICodeBook { + + ALL("1", "全部盘点"), + PARTIAL("2", "部分盘点") + ; + + @EnumValue + final String code; + final String description; +} diff --git a/src/main/java/tech/riemann/ims/enums/HandleEnum.java b/src/main/java/tech/riemann/ims/enums/HandleEnum.java new file mode 100644 index 0000000..57f6af7 --- /dev/null +++ b/src/main/java/tech/riemann/ims/enums/HandleEnum.java @@ -0,0 +1,25 @@ +package tech.riemann.ims.enums; + +import club.zhcs.lina.utils.enums.ICodeBook; +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author mayong + * @since 2024/12/6 10:09 + */ +@Getter +@AllArgsConstructor +public enum HandleEnum implements ICodeBook { + + NO_ACTION("0", "无需处理"), + IGNORE_AND_SAVE("2", "忽略并保存"), + REPLENISH("3", "补货"), + OTHER("4", "其他") + ; + + @EnumValue + final String code; + final String description; +} diff --git a/src/main/java/tech/riemann/ims/enums/StockStatusEnum.java b/src/main/java/tech/riemann/ims/enums/StockStatusEnum.java new file mode 100644 index 0000000..cf36a11 --- /dev/null +++ b/src/main/java/tech/riemann/ims/enums/StockStatusEnum.java @@ -0,0 +1,28 @@ +package tech.riemann.ims.enums; + +import club.zhcs.lina.utils.enums.ICodeBook; +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author mayong + * @since 2024/12/6 9:34 + */ +@Getter +@AllArgsConstructor +public enum StockStatusEnum implements ICodeBook { + + IN("0", "在库"), + + + OUT("1", "外借"), + + OFF("2", "下架"), + + ; + + @EnumValue + final String code; + final String description; +} diff --git a/src/main/java/tech/riemann/ims/mapper/material/ApplyDetailMapper.java b/src/main/java/tech/riemann/ims/mapper/material/ApplyDetailMapper.java index 6762936..6cdfdf7 100644 --- a/src/main/java/tech/riemann/ims/mapper/material/ApplyDetailMapper.java +++ b/src/main/java/tech/riemann/ims/mapper/material/ApplyDetailMapper.java @@ -1,7 +1,7 @@ package tech.riemann.ims.mapper.material; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import tech.riemann.ims.entity.Inventory.ApplyDetail; +import tech.riemann.ims.entity.material.ApplyDetail; /** * @author mayong diff --git a/src/main/java/tech/riemann/ims/mapper/material/ApplyFormMapper.java b/src/main/java/tech/riemann/ims/mapper/material/ApplyFormMapper.java index 4dee4f0..56d32f7 100644 --- a/src/main/java/tech/riemann/ims/mapper/material/ApplyFormMapper.java +++ b/src/main/java/tech/riemann/ims/mapper/material/ApplyFormMapper.java @@ -1,7 +1,7 @@ package tech.riemann.ims.mapper.material; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import tech.riemann.ims.entity.Inventory.ApplyForm; +import tech.riemann.ims.entity.material.ApplyForm; /** * @author mayong diff --git a/src/main/java/tech/riemann/ims/mapper/material/MaterialBarcodeConfigMapper.java b/src/main/java/tech/riemann/ims/mapper/material/MaterialBarcodeConfigMapper.java new file mode 100644 index 0000000..2c3988d --- /dev/null +++ b/src/main/java/tech/riemann/ims/mapper/material/MaterialBarcodeConfigMapper.java @@ -0,0 +1,15 @@ +package tech.riemann.ims.mapper.material; + +import tech.riemann.ims.entity.material.MaterialBarcodeConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 物料库条码配置表 Mapper 接口 + * + * @author mayong) + * + * @since 2024-12-06 10:29:26 + */ +public interface MaterialBarcodeConfigMapper extends BaseMapper { + +} diff --git a/src/main/java/tech/riemann/ims/mapper/material/MaterialMapper.java b/src/main/java/tech/riemann/ims/mapper/material/MaterialMapper.java index 85422e3..4b21ee9 100644 --- a/src/main/java/tech/riemann/ims/mapper/material/MaterialMapper.java +++ b/src/main/java/tech/riemann/ims/mapper/material/MaterialMapper.java @@ -1,7 +1,7 @@ package tech.riemann.ims.mapper.material; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import tech.riemann.ims.entity.Inventory.Material; +import tech.riemann.ims.entity.material.Material; /** * @author mayong diff --git a/src/main/java/tech/riemann/ims/mapper/material/MaterialStockDetailMapper.java b/src/main/java/tech/riemann/ims/mapper/material/MaterialStockDetailMapper.java new file mode 100644 index 0000000..45aaffd --- /dev/null +++ b/src/main/java/tech/riemann/ims/mapper/material/MaterialStockDetailMapper.java @@ -0,0 +1,15 @@ +package tech.riemann.ims.mapper.material; + +import tech.riemann.ims.entity.material.MaterialStockDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 物料明细数据表 Mapper 接口 + * + * @author mayong) + * + * @since 2024-12-06 10:29:26 + */ +public interface MaterialStockDetailMapper extends BaseMapper { + +} diff --git a/src/main/java/tech/riemann/ims/mapper/material/StocktakingAuditMapper.java b/src/main/java/tech/riemann/ims/mapper/material/StocktakingAuditMapper.java new file mode 100644 index 0000000..cb697a4 --- /dev/null +++ b/src/main/java/tech/riemann/ims/mapper/material/StocktakingAuditMapper.java @@ -0,0 +1,15 @@ +package tech.riemann.ims.mapper.material; + +import tech.riemann.ims.entity.material.StocktakingAudit; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 盘点审核表 Mapper 接口 + * + * @author mayong) + * + * @since 2024-12-06 10:32:29 + */ +public interface StocktakingAuditMapper extends BaseMapper { + +} diff --git a/src/main/java/tech/riemann/ims/service/material/IApplyDetailService.java b/src/main/java/tech/riemann/ims/service/material/IApplyDetailService.java index 49d5ab5..0cf9dc6 100644 --- a/src/main/java/tech/riemann/ims/service/material/IApplyDetailService.java +++ b/src/main/java/tech/riemann/ims/service/material/IApplyDetailService.java @@ -2,7 +2,7 @@ package tech.riemann.ims.service.material; import com.baomidou.mybatisplus.extension.service.IService; import org.nutz.spring.boot.service.interfaces.IdNameEntityService; -import tech.riemann.ims.entity.Inventory.ApplyDetail; +import tech.riemann.ims.entity.material.ApplyDetail; /** * @author mayong diff --git a/src/main/java/tech/riemann/ims/service/material/IApplyFormService.java b/src/main/java/tech/riemann/ims/service/material/IApplyFormService.java index b2fa4d5..6924a82 100644 --- a/src/main/java/tech/riemann/ims/service/material/IApplyFormService.java +++ b/src/main/java/tech/riemann/ims/service/material/IApplyFormService.java @@ -2,7 +2,7 @@ package tech.riemann.ims.service.material; import com.baomidou.mybatisplus.extension.service.IService; import org.nutz.spring.boot.service.interfaces.IdNameEntityService; -import tech.riemann.ims.entity.Inventory.ApplyForm; +import tech.riemann.ims.entity.material.ApplyForm; /** * @author mayong diff --git a/src/main/java/tech/riemann/ims/service/material/IMaterialBarcodeConfigService.java b/src/main/java/tech/riemann/ims/service/material/IMaterialBarcodeConfigService.java new file mode 100644 index 0000000..3b7863f --- /dev/null +++ b/src/main/java/tech/riemann/ims/service/material/IMaterialBarcodeConfigService.java @@ -0,0 +1,18 @@ +package tech.riemann.ims.service.material; + +import tech.riemann.ims.entity.material.MaterialBarcodeConfig; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nutz.spring.boot.service.interfaces.IdNameEntityService; + +/** + *

+ * 物料库条码配置表 服务类 + *

+ * + * @author mayong) + * + * @since 2024-12-06 10:32:29 + */ +public interface IMaterialBarcodeConfigService extends IService, IdNameEntityService { + +} diff --git a/src/main/java/tech/riemann/ims/service/material/IMaterialService.java b/src/main/java/tech/riemann/ims/service/material/IMaterialService.java index 2579f72..62d5d8f 100644 --- a/src/main/java/tech/riemann/ims/service/material/IMaterialService.java +++ b/src/main/java/tech/riemann/ims/service/material/IMaterialService.java @@ -2,7 +2,7 @@ package tech.riemann.ims.service.material; import com.baomidou.mybatisplus.extension.service.IService; import org.nutz.spring.boot.service.interfaces.IdNameEntityService; -import tech.riemann.ims.entity.Inventory.Material; +import tech.riemann.ims.entity.material.Material; /** * @author mayong diff --git a/src/main/java/tech/riemann/ims/service/material/IMaterialStockDetailService.java b/src/main/java/tech/riemann/ims/service/material/IMaterialStockDetailService.java new file mode 100644 index 0000000..e6801cf --- /dev/null +++ b/src/main/java/tech/riemann/ims/service/material/IMaterialStockDetailService.java @@ -0,0 +1,18 @@ +package tech.riemann.ims.service.material; + +import tech.riemann.ims.entity.material.MaterialStockDetail; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nutz.spring.boot.service.interfaces.IdNameEntityService; + +/** + *

+ * 物料明细数据表 服务类 + *

+ * + * @author mayong) + * + * @since 2024-12-06 10:32:29 + */ +public interface IMaterialStockDetailService extends IService, IdNameEntityService { + +} diff --git a/src/main/java/tech/riemann/ims/service/material/IStocktakingAuditService.java b/src/main/java/tech/riemann/ims/service/material/IStocktakingAuditService.java new file mode 100644 index 0000000..2e521bc --- /dev/null +++ b/src/main/java/tech/riemann/ims/service/material/IStocktakingAuditService.java @@ -0,0 +1,18 @@ +package tech.riemann.ims.service.material; + +import tech.riemann.ims.entity.material.StocktakingAudit; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nutz.spring.boot.service.interfaces.IdNameEntityService; + +/** + *

+ * 盘点审核表 服务类 + *

+ * + * @author mayong) + * + * @since 2024-12-06 10:32:29 + */ +public interface IStocktakingAuditService extends IService, IdNameEntityService { + +} diff --git a/src/main/java/tech/riemann/ims/service/material/impl/ApplyDetailServiceImpl.java b/src/main/java/tech/riemann/ims/service/material/impl/ApplyDetailServiceImpl.java index 1b833a1..d91f9fa 100644 --- a/src/main/java/tech/riemann/ims/service/material/impl/ApplyDetailServiceImpl.java +++ b/src/main/java/tech/riemann/ims/service/material/impl/ApplyDetailServiceImpl.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.nutz.dao.Dao; import org.springframework.stereotype.Service; -import tech.riemann.ims.entity.Inventory.ApplyDetail; +import tech.riemann.ims.entity.material.ApplyDetail; import tech.riemann.ims.mapper.material.ApplyDetailMapper; import tech.riemann.ims.service.material.IApplyDetailService; diff --git a/src/main/java/tech/riemann/ims/service/material/impl/ApplyFormServiceImpl.java b/src/main/java/tech/riemann/ims/service/material/impl/ApplyFormServiceImpl.java index 6fcfe8a..26eec81 100644 --- a/src/main/java/tech/riemann/ims/service/material/impl/ApplyFormServiceImpl.java +++ b/src/main/java/tech/riemann/ims/service/material/impl/ApplyFormServiceImpl.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.nutz.dao.Dao; import org.springframework.stereotype.Service; -import tech.riemann.ims.entity.Inventory.ApplyForm; +import tech.riemann.ims.entity.material.ApplyForm; import tech.riemann.ims.mapper.material.ApplyFormMapper; import tech.riemann.ims.service.material.IApplyFormService; diff --git a/src/main/java/tech/riemann/ims/service/material/impl/MaterialBarcodeConfigServiceImpl.java b/src/main/java/tech/riemann/ims/service/material/impl/MaterialBarcodeConfigServiceImpl.java new file mode 100644 index 0000000..0b42ee7 --- /dev/null +++ b/src/main/java/tech/riemann/ims/service/material/impl/MaterialBarcodeConfigServiceImpl.java @@ -0,0 +1,45 @@ +package tech.riemann.ims.service.material.impl; + +import tech.riemann.ims.entity.material.MaterialBarcodeConfig; +import tech.riemann.ims.mapper.material.MaterialBarcodeConfigMapper; +import tech.riemann.ims.service.material.IMaterialBarcodeConfigService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import lombok.RequiredArgsConstructor; + +import org.nutz.dao.Dao; +import org.springframework.stereotype.Service; + +/** + *

+ * 物料库条码配置表 服务实现类 + *

+ * + * @author mayong) + * + * @since 2024-12-06 10:32:29 + */ +@Service +@RequiredArgsConstructor +public class MaterialBarcodeConfigServiceImpl extends ServiceImpl implements IMaterialBarcodeConfigService { + + private final Dao dao; + + /** + * @return + * @see org.nutz.spring.boot.service.ExtService#dao() + */ + @Override + public Dao dao() { + return dao; + } + + /** + * @return + * @see org.nutz.spring.boot.service.interfaces.EntityService#getEntityType() + */ + @Override + public Class getEntityType() { + return MaterialBarcodeConfig.class; + } +} diff --git a/src/main/java/tech/riemann/ims/service/material/impl/MaterialServiceImpl.java b/src/main/java/tech/riemann/ims/service/material/impl/MaterialServiceImpl.java index 56edf44..47abc5e 100644 --- a/src/main/java/tech/riemann/ims/service/material/impl/MaterialServiceImpl.java +++ b/src/main/java/tech/riemann/ims/service/material/impl/MaterialServiceImpl.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.nutz.dao.Dao; import org.springframework.stereotype.Service; -import tech.riemann.ims.entity.Inventory.Material; +import tech.riemann.ims.entity.material.Material; import tech.riemann.ims.mapper.material.MaterialMapper; import tech.riemann.ims.service.material.IMaterialService; diff --git a/src/main/java/tech/riemann/ims/service/material/impl/MaterialStockDetailServiceImpl.java b/src/main/java/tech/riemann/ims/service/material/impl/MaterialStockDetailServiceImpl.java new file mode 100644 index 0000000..4579597 --- /dev/null +++ b/src/main/java/tech/riemann/ims/service/material/impl/MaterialStockDetailServiceImpl.java @@ -0,0 +1,45 @@ +package tech.riemann.ims.service.material.impl; + +import tech.riemann.ims.entity.material.MaterialStockDetail; +import tech.riemann.ims.mapper.material.MaterialStockDetailMapper; +import tech.riemann.ims.service.material.IMaterialStockDetailService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import lombok.RequiredArgsConstructor; + +import org.nutz.dao.Dao; +import org.springframework.stereotype.Service; + +/** + *

+ * 物料明细数据表 服务实现类 + *

+ * + * @author mayong) + * + * @since 2024-12-06 10:32:29 + */ +@Service +@RequiredArgsConstructor +public class MaterialStockDetailServiceImpl extends ServiceImpl implements IMaterialStockDetailService { + + private final Dao dao; + + /** + * @return + * @see org.nutz.spring.boot.service.ExtService#dao() + */ + @Override + public Dao dao() { + return dao; + } + + /** + * @return + * @see org.nutz.spring.boot.service.interfaces.EntityService#getEntityType() + */ + @Override + public Class getEntityType() { + return MaterialStockDetail.class; + } +} diff --git a/src/main/java/tech/riemann/ims/service/material/impl/StocktakingAuditServiceImpl.java b/src/main/java/tech/riemann/ims/service/material/impl/StocktakingAuditServiceImpl.java new file mode 100644 index 0000000..ab2edd2 --- /dev/null +++ b/src/main/java/tech/riemann/ims/service/material/impl/StocktakingAuditServiceImpl.java @@ -0,0 +1,45 @@ +package tech.riemann.ims.service.material.impl; + +import tech.riemann.ims.entity.material.StocktakingAudit; +import tech.riemann.ims.mapper.material.StocktakingAuditMapper; +import tech.riemann.ims.service.material.IStocktakingAuditService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import lombok.RequiredArgsConstructor; + +import org.nutz.dao.Dao; +import org.springframework.stereotype.Service; + +/** + *

+ * 盘点审核表 服务实现类 + *

+ * + * @author mayong) + * + * @since 2024-12-06 10:32:29 + */ +@Service +@RequiredArgsConstructor +public class StocktakingAuditServiceImpl extends ServiceImpl implements IStocktakingAuditService { + + private final Dao dao; + + /** + * @return + * @see org.nutz.spring.boot.service.ExtService#dao() + */ + @Override + public Dao dao() { + return dao; + } + + /** + * @return + * @see org.nutz.spring.boot.service.interfaces.EntityService#getEntityType() + */ + @Override + public Class getEntityType() { + return StocktakingAudit.class; + } +} diff --git a/src/main/resources/mapper_/MaterialBarcodeConfigMapper.xml b/src/main/resources/mapper_/MaterialBarcodeConfigMapper.xml new file mode 100644 index 0000000..72d129e --- /dev/null +++ b/src/main/resources/mapper_/MaterialBarcodeConfigMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + id, + created_time, + updated_time, + created_by, + updated_by, + mbc_material_key, mbc_latest_location + + \ No newline at end of file diff --git a/src/main/resources/mapper_/MaterialStockDetailMapper.xml b/src/main/resources/mapper_/MaterialStockDetailMapper.xml new file mode 100644 index 0000000..0d8d72e --- /dev/null +++ b/src/main/resources/mapper_/MaterialStockDetailMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + id, + created_time, + updated_time, + created_by, + updated_by, + msd_material_key, msd_barcode, msd_status, msd_material_id + + \ No newline at end of file diff --git a/src/main/resources/mapper_/StocktakingAuditMapper.xml b/src/main/resources/mapper_/StocktakingAuditMapper.xml new file mode 100644 index 0000000..6e8a6c7 --- /dev/null +++ b/src/main/resources/mapper_/StocktakingAuditMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + id, + created_time, + updated_time, + created_by, + updated_by, + s_apply_id, s_reviewer, s_review_result + + \ No newline at end of file diff --git a/src/test/java/tech/riemann/ims/MysqlGenerator.java b/src/test/java/tech/riemann/ims/MysqlGenerator.java index 2e67015..fc9caea 100644 --- a/src/test/java/tech/riemann/ims/MysqlGenerator.java +++ b/src/test/java/tech/riemann/ims/MysqlGenerator.java @@ -1,17 +1,5 @@ package tech.riemann.ims; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.stream.Collectors; - -import org.nutz.lang.Lang; -import org.nutz.lang.Strings; -import org.nutz.lang.util.NutMap; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.ConstVal; @@ -19,9 +7,19 @@ import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.BeetlTemplateEngine; - +import org.nutz.lang.Lang; +import org.nutz.lang.Strings; +import org.nutz.lang.util.NutMap; import tech.riemann.ims.entity.IdBaseEntity; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.stream.Collectors; + public class MysqlGenerator { static String jdbcUrl = "jdbc:mysql://mysql.riemann.tech:13307/hx_jxc?characterEncoding=UTF-8"; @@ -67,15 +65,10 @@ public class MysqlGenerator { public static void main(String[] args) { String projectPath = System.getProperty("user.dir"); - List relationTables = Lang.list("t_role_permission", "t_user_permission", "t_user_role", "t_user_bind"); + List relationTables = Lang.list(); + NutMap.NEW() - // .addv("acl", Lang.array("t_user", "t_role", "t_permission", - // "t_role_permission", "t_user_permission", "t_user_role", - // "t_user_bind")) - // .addv("dictionary", Lang.array("t_dictionary", "t_group")) - // .addv("sensor", Lang.array("t_sensor", "t_sensor_log")) - // .addv("station", Lang.array("t_station", "t_team")) - .addv("station.status", Lang.array("t_station_status", "t_power_log", "t_working_log")) + .addv("material", Lang.array("t_material_barcode_config", "t_material_stock_detail", "t_stocktaking_audit")) .entrySet() .stream() .forEach(e -> { @@ -83,7 +76,7 @@ public class MysqlGenerator { FastAutoGenerator.create(jdbcUrl, user, password) .globalConfig(builder -> { builder - .author("Kerbores(kerbores@gmail.com)") + .author("mayong)") .enableSpringdoc() .commentDate(() -> LocalDateTime.now() .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss",