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 ce876dd..215a79d 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 @@ -15,10 +15,7 @@ import org.springframework.web.bind.annotation.*; import tech.riemann.ims.dto.request.ApplyInfo; import tech.riemann.ims.dto.request.AuditApplyInfo; import tech.riemann.ims.dto.request.ReviewDTO; -import tech.riemann.ims.dto.response.ApplyDTO; -import tech.riemann.ims.dto.response.ComparisonResDTO; -import tech.riemann.ims.dto.response.StockDetailInfo; -import tech.riemann.ims.dto.response.WaitScanInfo; +import tech.riemann.ims.dto.response.*; import tech.riemann.ims.entity.material.*; import tech.riemann.ims.enums.*; import tech.riemann.ims.service.material.*; @@ -45,6 +42,7 @@ public class ApplyFormController { private final IStocktakingScanDetailService stocktakingScanDetailService; private final IStocktakingScanExceptionalDataService stocktakingScanExceptionalDataService; private final ITypeService typeService; + private final IManualStockDetailService manualStockDetailService; @GetMapping("applies") @Operation(summary = "分页查询申请列表") @@ -187,6 +185,24 @@ public class ApplyFormController { } } + @PostMapping("manual/audit-apply") + @Operation(summary = "提交人工盘点数据") + public void submitManualStock(@Validated @Parameter(description = "人工盘点数据") @RequestBody List details){ + if(details.isEmpty()){ + return; + } + manualStockDetailService.saveBatch(details); + //修改状态 + applyFormService.update(Wrappers.lambdaUpdate() + .eq(ApplyForm::getId, details.get(0).getApplyId()) + .set(ApplyForm::getReviewResult, ReviewResultEnum.WAIT_REVIEW)); + } + @GetMapping("manual/data/{applyId}") + @Operation(summary = "获取人工盘点数据") + public List getManualStock(@Parameter(description = "申请单ID") @PathVariable(name = "applyId") Long applyId){ + return materialStockDetailService.getByApplyId(applyId); + + } 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 0f3ad5c..3824555 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 @@ -84,12 +84,10 @@ public class MaterialController { @Parameter(description = "是否赋码") @RequestParam(required = false) Boolean assignRule) { String[] types = StringUtils.isNotBlank(type) ? type.split(",") : new String[0]; List materials = materialService.queryLikeRight(List.of(types)); - if (Boolean.FALSE.equals(assignRule)) { - materials.stream().filter(item -> Boolean.TRUE.equals(item.getAssignRule())) - .forEach(item -> item.setTypeName(typeService.getTypeName(item.getType()))); - } else { - materials.forEach(item -> item.setTypeName(typeService.getTypeName(item.getType()))); + if (assignRule != null) { + materials.removeIf(item -> assignRule != item.getAssignRule()); } + materials.forEach(item -> item.setTypeName(typeService.getTypeName(item.getType()))); return materials; } @@ -122,7 +120,7 @@ public class MaterialController { private String getCode() { String code; while (true) { - code = String.valueOf(R.random(100000, 999999)); + code = String.valueOf(R.random(1000, 9999)); try { // 如果代码已经存在,继续循环 if (Strings.isBlank(cache.get(code))) { diff --git a/src/main/java/tech/riemann/ims/dto/response/ManualStockDTO.java b/src/main/java/tech/riemann/ims/dto/response/ManualStockDTO.java new file mode 100644 index 0000000..ae80ac8 --- /dev/null +++ b/src/main/java/tech/riemann/ims/dto/response/ManualStockDTO.java @@ -0,0 +1,55 @@ +package tech.riemann.ims.dto.response; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @author mayong + * @since 2025/3/9 19:16 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ManualStockDTO { + + @Schema(description = "编码") + private String code; + + @Schema(description = "名称" ) + private String name; + + @Schema(description = "类型") + private String type; + + @TableField(exist = false) + private String typeName; + + @Schema(description = "价格") + + private BigDecimal price; + + @Schema(description = "规格" ) + private String spec; + + @Schema(description = "申请id") + private Long applyId; + + @Schema(description = "物料id") + private Long materialId; + + @Schema(description = "库存数量") + private Integer stock; + + @Schema(description = "手动核实库存数量") + private Integer manualStock; + + @Schema(description = "异常原因") + private String msg; +} diff --git a/src/main/java/tech/riemann/ims/entity/material/ManualStockDetail.java b/src/main/java/tech/riemann/ims/entity/material/ManualStockDetail.java new file mode 100644 index 0000000..e590ac7 --- /dev/null +++ b/src/main/java/tech/riemann/ims/entity/material/ManualStockDetail.java @@ -0,0 +1,72 @@ +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 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 2025/3/9 18:53 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@FieldNameConstants +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("t_manual_stock_detail") +@Table("t_manual_stock_detail") +@Comment("物料") +@Schema(name = "ManualStockDetail", description = "人工手动核实物料库存明细") +public class ManualStockDetail extends IdBaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "申请id", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("m_apply_id") + @Column("m_apply_id") + @Comment("申请id") + @ColDefine(notNull = false, width = 19, precision = 0) + private Long applyId; + + @Schema(description = "物料id", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("m_material_id") + @Column("m_material_id") + @Comment("物料id") + @ColDefine(notNull = false, width = 19, precision = 0) + private Long materialId; + + @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("m_stock") + @Column("m_stock") + @Comment("库存数量") + @ColDefine(notNull = false, type = ColType.INT) + private Integer stock; + + @Schema(description = "手动核实库存数量", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("m_manual_stock") + @Column("m_manual_stock") + @Comment("手动核实库存数量") + @ColDefine(notNull = false, type = ColType.INT) + private Integer manualStock; + + @Schema(description = "异常原因", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @TableField("m_msg") + @Column("m_msg") + @Comment("异常原因") + @ColDefine(notNull = false) + private String msg; +} diff --git a/src/main/java/tech/riemann/ims/mapper/material/ManualStockDetailMapper.java b/src/main/java/tech/riemann/ims/mapper/material/ManualStockDetailMapper.java new file mode 100644 index 0000000..e202237 --- /dev/null +++ b/src/main/java/tech/riemann/ims/mapper/material/ManualStockDetailMapper.java @@ -0,0 +1,11 @@ +package tech.riemann.ims.mapper.material; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import tech.riemann.ims.entity.material.ManualStockDetail; + +/** + * @author mayong + * @since 2024/11/28 15:38 + */ +public interface ManualStockDetailMapper extends BaseMapper { +} diff --git a/src/main/java/tech/riemann/ims/service/material/IManualStockDetailService.java b/src/main/java/tech/riemann/ims/service/material/IManualStockDetailService.java new file mode 100644 index 0000000..d2ce34f --- /dev/null +++ b/src/main/java/tech/riemann/ims/service/material/IManualStockDetailService.java @@ -0,0 +1,13 @@ +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.material.ManualStockDetail; + +/** + * @author mayong + * @since 2024/11/28 15:41 + */ +public interface IManualStockDetailService extends IService, IdNameEntityService { + +} diff --git a/src/main/java/tech/riemann/ims/service/material/IMaterialStockDetailService.java b/src/main/java/tech/riemann/ims/service/material/IMaterialStockDetailService.java index e6801cf..1fb625b 100644 --- a/src/main/java/tech/riemann/ims/service/material/IMaterialStockDetailService.java +++ b/src/main/java/tech/riemann/ims/service/material/IMaterialStockDetailService.java @@ -1,9 +1,12 @@ package tech.riemann.ims.service.material; +import tech.riemann.ims.dto.response.ManualStockDTO; import tech.riemann.ims.entity.material.MaterialStockDetail; import com.baomidou.mybatisplus.extension.service.IService; import org.nutz.spring.boot.service.interfaces.IdNameEntityService; +import java.util.List; + /** *

* 物料明细数据表 服务类 @@ -15,4 +18,5 @@ import org.nutz.spring.boot.service.interfaces.IdNameEntityService; */ public interface IMaterialStockDetailService extends IService, IdNameEntityService { + List getByApplyId(Long applyId); } diff --git a/src/main/java/tech/riemann/ims/service/material/impl/ManualStockDetailServiceImpl.java b/src/main/java/tech/riemann/ims/service/material/impl/ManualStockDetailServiceImpl.java new file mode 100644 index 0000000..3fa1025 --- /dev/null +++ b/src/main/java/tech/riemann/ims/service/material/impl/ManualStockDetailServiceImpl.java @@ -0,0 +1,26 @@ +package tech.riemann.ims.service.material.impl; + +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.material.ManualStockDetail; +import tech.riemann.ims.mapper.material.ManualStockDetailMapper; +import tech.riemann.ims.service.material.IManualStockDetailService; + +/** + * @author mayong + * @since 2024/11/28 15:36 + */ +@Service +@RequiredArgsConstructor +public class ManualStockDetailServiceImpl extends ServiceImpl implements IManualStockDetailService { + + private final Dao dao; + + @Override + public Dao dao() { + return dao; + } + +} 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 index 4579597..0a489b9 100644 --- a/src/main/java/tech/riemann/ims/service/material/impl/MaterialStockDetailServiceImpl.java +++ b/src/main/java/tech/riemann/ims/service/material/impl/MaterialStockDetailServiceImpl.java @@ -1,5 +1,6 @@ package tech.riemann.ims.service.material.impl; +import tech.riemann.ims.dto.response.ManualStockDTO; import tech.riemann.ims.entity.material.MaterialStockDetail; import tech.riemann.ims.mapper.material.MaterialStockDetailMapper; import tech.riemann.ims.service.material.IMaterialStockDetailService; @@ -10,6 +11,8 @@ import lombok.RequiredArgsConstructor; import org.nutz.dao.Dao; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 物料明细数据表 服务实现类 @@ -42,4 +45,9 @@ public class MaterialStockDetailServiceImpl extends ServiceImpl getEntityType() { return MaterialStockDetail.class; } + + @Override + public List getByApplyId(Long applyId) { + return List.of(); + } }