From 5ed374f06f473f77cbeaa2d5ac4684a5555fad05 Mon Sep 17 00:00:00 2001 From: "Mr.j" <2221464500@qq.com> Date: Wed, 13 Aug 2025 16:46:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=82=B9=E5=87=BB=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E6=94=B6=E8=B4=A7=E5=90=8E=E7=9B=B4=E6=8E=A5=E5=85=A5?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dite/znpt/domain/vo/ReceiptRequest.java | 160 ++++++++++++++++++ .../dite/znpt/service/EquipmentService.java | 6 + .../service/impl/EquipmentServiceImpl.java | 69 ++++++++ .../znpt/service/impl/ProjectServiceImpl.java | 1 - .../web/controller/EquipmentController.java | 12 ++ 5 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ReceiptRequest.java diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ReceiptRequest.java b/core/src/main/java/com/dite/znpt/domain/vo/ReceiptRequest.java new file mode 100644 index 0000000..d1776ef --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ReceiptRequest.java @@ -0,0 +1,160 @@ +package com.dite.znpt.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 收货请求参数(扩展版,包含完整设备信息) + * + * @author system + * @date 2025-01-08 + */ +@Data +@ApiModel(value = "收货请求参数", description = "收货请求参数,包含收货信息和设备信息") +public class ReceiptRequest { + + // 收货特有信息 + @NotBlank(message = "收货时间不能为空") + @ApiModelProperty("收货时间") + private String receiptTime; + + @NotBlank(message = "收货人不能为空") + @ApiModelProperty("收货人") + private String receiptPerson; + + @NotNull(message = "收货数量不能为空") + @ApiModelProperty("收货数量") + private Integer receiptQuantity; + + @ApiModelProperty("收货备注") + private String receiptRemark; + + @NotBlank(message = "外观检查结果不能为空") + @ApiModelProperty("外观检查结果") + private String appearanceCheck; + + @NotBlank(message = "功能测试结果不能为空") + @ApiModelProperty("功能测试结果") + private String functionTest; + + @NotBlank(message = "包装完整性不能为空") + @ApiModelProperty("包装完整性") + private String packageIntegrity; + + @NotBlank(message = "配件完整性不能为空") + @ApiModelProperty("配件完整性") + private String accessoryIntegrity; + + @NotBlank(message = "检查结果不能为空") + @ApiModelProperty("检查结果") + private String checkResult; + + @ApiModelProperty("检查备注") + private String checkRemark; + + @NotBlank(message = "入库位置不能为空") + @ApiModelProperty("入库位置") + private String storageLocation; + + @NotBlank(message = "库管员不能为空") + @ApiModelProperty("库管员") + private String storageManager; + + // 设备基本信息(从采购数据继承) + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("设备型号") + private String equipmentModel; + + @ApiModelProperty("设备类型") + private String equipmentType; + + @ApiModelProperty("设备序列号") + private String equipmentSn; + + @ApiModelProperty("品牌") + private String brand; + + @ApiModelProperty("配置规格/参数") + private String specification; + + @ApiModelProperty("资产编号") + private String assetCode; + + // 采购信息(从采购数据继承) + @ApiModelProperty("采购订单号") + private String purchaseOrder; + + @ApiModelProperty("供应商名称") + private String supplierName; + + @ApiModelProperty("采购价格") + private BigDecimal purchasePrice; + + @ApiModelProperty("采购时间") + private String purchaseTime; + + @ApiModelProperty("数量") + private Integer quantity; + + @ApiModelProperty("单价") + private BigDecimal unitPrice; + + @ApiModelProperty("总价") + private BigDecimal totalPrice; + + // 入库信息 + @ApiModelProperty("入库时间") + private String inStockTime; + + @ApiModelProperty("物理位置") + private String physicalLocation; + + @ApiModelProperty("位置状态") + private String locationStatus; + + @ApiModelProperty("负责人") + private String responsiblePerson; + + @ApiModelProperty("库存条码") + private String inventoryBarcode; + + // 状态信息 + @ApiModelProperty("设备状态") + private String equipmentStatus; + + @ApiModelProperty("使用状态") + private String useStatus; + + @ApiModelProperty("健康状态") + private String healthStatus; + + @ApiModelProperty("收货状态") + private String receiptStatus; + + // 其他管理信息 + @ApiModelProperty("折旧方法") + private String depreciationMethod; + + @ApiModelProperty("折旧年限") + private Integer depreciationYears; + + @ApiModelProperty("残值") + private BigDecimal salvageValue; + + @ApiModelProperty("当前净值") + private BigDecimal currentNetValue; + + // 系统字段 + @ApiModelProperty("创建时间") + private String createTime; + + @ApiModelProperty("更新时间") + private String updateTime; +} diff --git a/core/src/main/java/com/dite/znpt/service/EquipmentService.java b/core/src/main/java/com/dite/znpt/service/EquipmentService.java index 0697362..dbded87 100644 --- a/core/src/main/java/com/dite/znpt/service/EquipmentService.java +++ b/core/src/main/java/com/dite/znpt/service/EquipmentService.java @@ -6,6 +6,7 @@ import com.dite.znpt.domain.entity.EquipmentEntity; import com.dite.znpt.domain.vo.EquipmentListReq; import com.dite.znpt.domain.vo.EquipmentReq; import com.dite.znpt.domain.vo.EquipmentResp; +import com.dite.znpt.domain.vo.ReceiptRequest; import java.util.List; import java.util.Map; @@ -53,6 +54,11 @@ public interface EquipmentService extends IService { */ Object getProcurementStats(); + /** + * 确认收货并自动入库 + */ + void receiveGoodsAndStockIn(String equipmentId, ReceiptRequest req); + /** * 导出采购记录 */ diff --git a/core/src/main/java/com/dite/znpt/service/impl/EquipmentServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/EquipmentServiceImpl.java index bcee3bb..9d6beec 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/EquipmentServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/EquipmentServiceImpl.java @@ -23,9 +23,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; +import com.dite.znpt.domain.vo.ReceiptRequest; +import cn.dev33.satoken.stp.StpUtil; +import org.springframework.beans.BeanUtils; /** * @author Bear.G @@ -840,4 +844,69 @@ public class EquipmentServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("contract_code", req.getProjectOrigin()); ContractEntity contractEntity = contractMapper.selectOne(queryWrapper); - contractEntity.setProjectId(entity.getProjectId()); contractMapper.updateById(contractEntity); for (ProjectInitTaskReq taskReq : req.getTasks()) { ProjectTaskEntity taskEntity = BeanUtil.copyProperties(taskReq, ProjectTaskEntity.class); diff --git a/web/src/main/java/com/dite/znpt/web/controller/EquipmentController.java b/web/src/main/java/com/dite/znpt/web/controller/EquipmentController.java index 8da84ae..1b8280c 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/EquipmentController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/EquipmentController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; +import com.dite.znpt.domain.vo.ReceiptRequest; /** * @author Bear.G @@ -139,4 +140,15 @@ public class EquipmentController { public Result getProcurementStats(){ return Result.ok(equipmentService.getProcurementStats()); } + + @ApiOperation(value = "确认收货并自动入库", httpMethod = "POST") + @PostMapping("/procurement/receipt/{equipmentId}") + public Result receiveGoods(@PathVariable String equipmentId, @Validated @RequestBody ReceiptRequest req) { + log.info("=== 设备收货接口被调用 ==="); + log.info("设备ID: {}", equipmentId); + log.info("收货数据: {}", req); + + equipmentService.receiveGoodsAndStockIn(equipmentId, req); + return Result.ok("收货成功,设备已自动入库"); + } }