From cc59b65bc63b839127c29775bcd410dd407de66d Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期一, 21 四月 2025 17:20:02 +0800
Subject: [PATCH] 设备采购计划与设备照片
---
platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml | 3
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java | 137 ++++++++++++
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java | 20 +
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanItemMapper.java | 11 +
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlanItem.java | 89 ++++++++
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryDetailVo.java | 2
platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/MaxSizeContant.java | 5
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanMapper.java | 16 +
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DevicePurchasePlanPageVo.java | 55 +++++
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java | 11 +
platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanMapper.xml | 48 ++++
platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/DevicePurchasePlanQueryDTO.java | 20 +
platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanItemMapper.xml | 23 ++
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java | 91 ++++++++
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java | 4
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlan.java | 72 ++++++
16 files changed, 605 insertions(+), 2 deletions(-)
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/MaxSizeContant.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/MaxSizeContant.java
index ad399d5..0265a11 100644
--- a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/MaxSizeContant.java
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/MaxSizeContant.java
@@ -38,7 +38,10 @@
* 绉熻祦鍙拌处缂栧彿
*/
String LEDGER_CODE = "LEDGER_CODE";
-
+ /**
+ * 璁惧閲囪喘璁″垝缂栧彿
+ */
+ String DEVICE_PURCHASE_CODE = "DEVICE_PURCHASE_CODE";
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/DevicePurchasePlanQueryDTO.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/DevicePurchasePlanQueryDTO.java
new file mode 100644
index 0000000..027142f
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/DevicePurchasePlanQueryDTO.java
@@ -0,0 +1,20 @@
+package com.by4cloud.platformx.device.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class DevicePurchasePlanQueryDTO {
+
+ /**
+ * 閲囪喘璁″垝鍚嶇О
+ */
+ @Schema(description = "閲囪喘璁″垝鍚嶇О")
+ private String planName;
+
+ /**
+ * 閲囪喘璁″垝缂栧彿
+ */
+ @Schema(description = "閲囪喘璁″垝缂栧彿")
+ private String planCode;
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java
index 6ded1eb..8657194 100644
--- a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java
@@ -51,4 +51,8 @@
@Schema(description = "鍏宠仈鍙拌处鏄庣粏ID")
@Column(columnDefinition="bigint comment '鍏宠仈鍙拌处鏄庣粏ID'")
private Long ledgerItemId;
+
+ @Schema(description = "璁惧鐓х墖鍦板潃")
+ @Column(columnDefinition="varchar(256) comment '璁惧鐓х墖鍦板潃'")
+ private String filePath;
}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlan.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlan.java
new file mode 100644
index 0000000..9934127
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlan.java
@@ -0,0 +1,72 @@
+package com.by4cloud.platformx.device.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Transient;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Entity
+@TableName("device_purchase_plan")
+@javax.persistence.Table(name = "device_purchase_plan")
+@Table(appliesTo = "device_purchase_plan", comment = "璁惧閲囪喘璁″垝")
+public class DevicePurchasePlan extends BaseModel<DevicePurchasePlan> {
+
+ /**
+ * 閲囪喘璁″垝鍚嶇О
+ */
+ @Schema(description = "閲囪喘璁″垝鍚嶇О")
+ @Column(columnDefinition="VARCHAR(128) comment '閲囪喘璁″垝鍚嶇О'")
+ private String planName;
+
+ /**
+ * 閲囪喘璁″垝缂栧彿
+ */
+ @Schema(description = "閲囪喘璁″垝缂栧彿")
+ @Column(columnDefinition="VARCHAR(128) comment '閲囪喘璁″垝缂栧彿'")
+ private String planCode;
+
+ /**
+ * 鐢宠浜�
+ */
+ @Schema(description = "鐢宠浜�")
+ @Column(columnDefinition="bigint comment '鐢宠浜�'")
+ private Long releaseId;
+
+ /**
+ * 鐢宠鍗曚綅
+ */
+ @Schema(description = "鐢宠鍗曚綅")
+ @Column(columnDefinition="bigint comment '鐢宠鍗曚綅'")
+ private Long releaseCompId;
+
+ /**
+ * 鐢宠鏃堕棿
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Schema(description = "鐢宠鏃堕棿")
+ @Column(columnDefinition="datetime comment '鐢宠鏃堕棿'")
+ private Date releaseTime;
+
+ /**
+ * 鐘舵��
+ */
+ @Schema(description = "鐘舵��")
+ @Column(columnDefinition="int comment '绫诲瀷 0寰呭鎵癸紝1宸插鎵�'")
+ private Integer status;
+
+ @Transient
+ @TableField(exist = false)
+ private List<DevicePurchasePlanItem> planItemList;
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlanItem.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlanItem.java
new file mode 100644
index 0000000..754040a
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlanItem.java
@@ -0,0 +1,89 @@
+package com.by4cloud.platformx.device.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import java.math.BigDecimal;
+
+@Data
+@Entity
+@TableName("device_purchase_plan_item")
+@javax.persistence.Table(name = "device_purchase_plan_item")
+@Table(appliesTo = "device_purchase_plan_item", comment = "璁惧閲囪喘璁″垝瀛愰」")
+public class DevicePurchasePlanItem extends BaseModel<DevicePurchasePlanItem> {
+
+ /**
+ * 璁″垝ID
+ */
+ @Schema(description="璁″垝ID")
+ @Column(columnDefinition="bigint comment '璁″垝ID'")
+ private Long planId;
+
+ /**
+ * 璁惧ID
+ */
+ @Schema(description="璁惧ID")
+ @Column(columnDefinition="bigint comment '璁惧ID'")
+ private Long deviceId;
+
+ /**
+ * 璁惧缂栫爜
+ */
+ @Schema(description="璁惧缂栫爜")
+ @Column(columnDefinition="VARCHAR(32) comment '璁惧缂栫爜'")
+ private String deviceCode;
+
+ /**
+ * 璁惧鍚嶇О
+ */
+ @Schema(description="璁惧鍚嶇О")
+ @Column(columnDefinition="VARCHAR(256) comment '璁惧鍚嶇О'")
+ private String deviceName;
+
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ @Schema(description="瑙勬牸鍨嬪彿")
+ @Column(columnDefinition="VARCHAR(256) comment '瑙勬牸鍨嬪彿'")
+ private String deviceModels;
+
+ /**
+ * 鍏抽敭鍙傛暟
+ */
+ @Schema(description="鍏抽敭鍙傛暟")
+ @Column(columnDefinition="VARCHAR(256) comment '鍏抽敭鍙傛暟'")
+ private String keyParameter;
+
+ /**
+ * 璁¢噺鍗曚綅
+ */
+ @Schema(description="璁¢噺鍗曚綅")
+ @Column(columnDefinition="VARCHAR(32) comment '璁¢噺鍗曚綅'")
+ private String meteringUnit;
+
+ /**
+ * 鏁伴噺
+ */
+ @Schema(description = "鏁伴噺")
+ @Column(columnDefinition="INTEGER comment '鏁伴噺'")
+ private Integer num;
+
+ /**
+ * 鍗曚环
+ */
+ @Schema(description = "鍗曚环")
+ @Column(columnDefinition="decimal(10,2) comment '鍗曚环'")
+ private BigDecimal unitPrice;
+
+ /**
+ * 閲戦
+ */
+ @Schema(description = "閲戦")
+ @Column(columnDefinition="decimal(10,2) comment '閲戦'")
+ private BigDecimal amount;
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DevicePurchasePlanPageVo.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DevicePurchasePlanPageVo.java
new file mode 100644
index 0000000..087ca3f
--- /dev/null
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DevicePurchasePlanPageVo.java
@@ -0,0 +1,55 @@
+package com.by4cloud.platformx.device.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class DevicePurchasePlanPageVo {
+
+ private Long id;
+ /**
+ * 閲囪喘璁″垝鍚嶇О
+ */
+ @Schema(description = "閲囪喘璁″垝鍚嶇О")
+ private String planName;
+
+ /**
+ * 閲囪喘璁″垝缂栧彿
+ */
+ @Schema(description = "閲囪喘璁″垝缂栧彿")
+ private String planCode;
+
+ /**
+ * 鐢宠浜�
+ */
+ @Schema(description = "鐢宠浜�")
+ private Long releaseId;
+
+ /**
+ * 鐢宠鍗曚綅
+ */
+ @Schema(description = "鐢宠鍗曚綅")
+ private Long releaseCompId;
+
+ /**
+ * 鐢宠鏃堕棿
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Schema(description = "鐢宠鏃堕棿")
+ private Date releaseTime;
+
+ /**
+ * 鐘舵��
+ */
+ @Schema(description = "鐘舵��")
+ private Integer status;
+
+ private String userName;
+
+ private String deptName;
+}
diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryDetailVo.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryDetailVo.java
index 3861361..fb1cdf0 100644
--- a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryDetailVo.java
+++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryDetailVo.java
@@ -26,4 +26,6 @@
@JsonFormat(pattern = "yyyy-MM-dd")
private Date deliveryDate;
+ @Schema(description = "鍥剧墖鍦板潃")
+ private String filePath;
}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java
index a1c9a82..6a60a0b 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java
@@ -166,4 +166,15 @@
public R getReleaseDetail(@PathVariable("id")Long id) {
return deviceInventoryService.getReleaseDetail(id);
}
+
+ /**
+ * 淇敼搴撳瓨琛�
+ * @param deviceInventory 搴撳瓨琛�
+ * @return R
+ */
+ @SysLog("淇敼搴撳瓨琛�" )
+ @PutMapping("/uploadPic")
+ public R uploadPic(@RequestBody DeviceInventory deviceInventory) {
+ return R.ok(deviceInventoryService.updateById(deviceInventory));
+ }
}
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java
new file mode 100644
index 0000000..b5136e5
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java
@@ -0,0 +1,137 @@
+package com.by4cloud.platformx.device.controller;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.common.security.util.SecurityUtils;
+import com.by4cloud.platformx.device.constant.MaxSizeContant;
+import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
+import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
+import com.by4cloud.platformx.device.service.DevicePurchasePlanService;
+import com.by4cloud.platformx.device.service.JcMaxSizeService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import org.springdoc.api.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 璁惧閲囪喘璁″垝
+ *
+ * @author syt
+ * @date 2025-04-21 14:43:13
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/devicePurchasePlan" )
+@Tag(description = "devicePurchasePlan" , name = "璁惧閲囪喘璁″垝绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class DevicePurchasePlanController {
+
+ private final DevicePurchasePlanService devicePurchasePlanService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page 鍒嗛〉瀵硅薄
+ * @param devicePurchasePlan 璁惧閲囪喘璁″垝
+ * @return
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+ @GetMapping("/page" )
+ @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_view')" )
+ public R getDevicePurchasePlanPage(@ParameterObject Page page, @ParameterObject DevicePurchasePlanQueryDTO queryDTO) {
+ return R.ok(devicePurchasePlanService.pageNew(page, queryDTO));
+ }
+
+
+ /**
+ * 閫氳繃id鏌ヨ璁惧閲囪喘璁″垝
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+ @GetMapping("/{id}" )
+ @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_view')" )
+ public R getById(@PathVariable("id" ) Long id) {
+ return R.ok(devicePurchasePlanService.getByIdNew(id));
+ }
+
+ /**
+ * 鏂板璁惧閲囪喘璁″垝
+ * @param devicePurchasePlan 璁惧閲囪喘璁″垝
+ * @return R
+ */
+ @Operation(summary = "鏂板璁惧閲囪喘璁″垝" , description = "鏂板璁惧閲囪喘璁″垝" )
+ @SysLog("鏂板璁惧閲囪喘璁″垝" )
+ @PostMapping
+ @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_add')" )
+ public R save(@RequestBody DevicePurchasePlan devicePurchasePlan) {
+
+ return R.ok(devicePurchasePlanService.saveNew(devicePurchasePlan));
+ }
+
+ /**
+ * 淇敼璁惧閲囪喘璁″垝
+ * @param devicePurchasePlan 璁惧閲囪喘璁″垝
+ * @return R
+ */
+ @Operation(summary = "淇敼璁惧閲囪喘璁″垝" , description = "淇敼璁惧閲囪喘璁″垝" )
+ @SysLog("淇敼璁惧閲囪喘璁″垝" )
+ @PutMapping
+ @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_edit')" )
+ public R updateById(@RequestBody DevicePurchasePlan devicePurchasePlan) {
+ return R.ok(devicePurchasePlanService.updateByIdNew(devicePurchasePlan));
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝
+ * @param ids id鍒楄〃
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝" , description = "閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝" )
+ @SysLog("閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝" )
+ @DeleteMapping
+ @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_del')" )
+ public R removeById(@RequestBody Long[] ids) {
+ return R.ok(devicePurchasePlanService.removeBatchByIds(CollUtil.toList(ids)));
+ }
+
+
+ /**
+ * 瀵煎嚭excel 琛ㄦ牸
+ * @param devicePurchasePlan 鏌ヨ鏉′欢
+ * @param ids 瀵煎嚭鎸囧畾ID
+ * @return excel 鏂囦欢娴�
+ */
+ @ResponseExcel
+ @GetMapping("/export")
+ @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_export')" )
+ public List<DevicePurchasePlan> export(DevicePurchasePlan devicePurchasePlan,Long[] ids) {
+ return devicePurchasePlanService.list(Wrappers.lambdaQuery(devicePurchasePlan).in(ArrayUtil.isNotEmpty(ids), DevicePurchasePlan::getId, ids));
+ }
+
+ /**
+ * 閫氳繃id閫氳繃璁惧閲囪喘璁″垝
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id閫氳繃璁惧閲囪喘璁″垝" , description = "閫氳繃id閫氳繃璁惧閲囪喘璁″垝" )
+ @GetMapping("/approved/{id}" )
+ @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_approved')" )
+ public R approved(@PathVariable("id" ) Long id) {
+ return R.ok(devicePurchasePlanService.approved(id));
+ }
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanItemMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanItemMapper.java
new file mode 100644
index 0000000..73f2ba8
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanItemMapper.java
@@ -0,0 +1,11 @@
+package com.by4cloud.platformx.device.mapper;
+
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import com.by4cloud.platformx.device.entity.DevicePurchasePlanItem;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DevicePurchasePlanItemMapper extends PlatformxBaseMapper<DevicePurchasePlanItem> {
+
+
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanMapper.java
new file mode 100644
index 0000000..8af023d
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanMapper.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.device.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
+import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
+import com.by4cloud.platformx.device.entity.vo.DevicePurchasePlanPageVo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DevicePurchasePlanMapper extends PlatformxBaseMapper<DevicePurchasePlan> {
+
+
+ IPage<DevicePurchasePlanPageVo> page(Page page, DevicePurchasePlanQueryDTO queryDTO);
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java
new file mode 100644
index 0000000..2176343
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java
@@ -0,0 +1,20 @@
+package com.by4cloud.platformx.device.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
+import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
+
+public interface DevicePurchasePlanService extends IService<DevicePurchasePlan> {
+
+ boolean saveNew(DevicePurchasePlan devicePurchasePlan);
+
+ IPage pageNew(Page page, DevicePurchasePlanQueryDTO queryDTO);
+
+ boolean approved(Long id);
+
+ DevicePurchasePlan getByIdNew(Long id);
+
+ boolean updateByIdNew(DevicePurchasePlan devicePurchasePlan);
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java
new file mode 100644
index 0000000..339476d
--- /dev/null
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java
@@ -0,0 +1,91 @@
+package com.by4cloud.platformx.device.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.common.security.util.SecurityUtils;
+import com.by4cloud.platformx.device.constant.MaxSizeContant;
+import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
+import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
+import com.by4cloud.platformx.device.entity.DevicePurchasePlanItem;
+import com.by4cloud.platformx.device.mapper.DevicePurchasePlanItemMapper;
+import com.by4cloud.platformx.device.mapper.DevicePurchasePlanMapper;
+import com.by4cloud.platformx.device.service.DevicePurchasePlanService;
+import com.by4cloud.platformx.device.service.JcMaxSizeService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 璁惧閲囪喘璁″垝
+ *
+ * @author syt
+ * @date 2025-04-21 14:43:13
+ */
+@Service
+@AllArgsConstructor
+public class DevicePurchasePlanServiceImpl extends ServiceImpl<DevicePurchasePlanMapper, DevicePurchasePlan> implements DevicePurchasePlanService {
+
+ private final JcMaxSizeService maxSizeService;
+
+ private final DevicePurchasePlanItemMapper itemMapper;
+
+ @Override
+ public boolean saveNew(DevicePurchasePlan devicePurchasePlan) {
+ devicePurchasePlan.setPlanCode(maxSizeService.nextNo(MaxSizeContant.DEVICE_PURCHASE_CODE));
+ devicePurchasePlan.setReleaseCompId(SecurityUtils.getUser().getCompId());
+ devicePurchasePlan.setReleaseId(SecurityUtils.getUser().getId());
+ devicePurchasePlan.setReleaseTime(new Date());
+ devicePurchasePlan.setStatus(0);
+ baseMapper.insert(devicePurchasePlan);
+ if (devicePurchasePlan.getPlanItemList() != null&&devicePurchasePlan.getPlanItemList().size()>0) {
+ devicePurchasePlan.getPlanItemList().forEach(item->{
+ item.setPlanId(devicePurchasePlan.getId());
+ itemMapper.insert(item);
+ });
+ }
+ return true;
+ }
+
+ @Override
+ public IPage pageNew(Page page, DevicePurchasePlanQueryDTO queryDTO) {
+ return baseMapper.page(page,queryDTO);
+ }
+
+ @Override
+ public boolean approved(Long id) {
+ DevicePurchasePlan plan = baseMapper.selectById(id);
+ plan.setStatus(1);
+ baseMapper.updateById(plan);
+ return true;
+ }
+
+ @Override
+ public DevicePurchasePlan getByIdNew(Long id) {
+ DevicePurchasePlan plan = baseMapper.selectById(id);
+ QueryWrapper<DevicePurchasePlanItem> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("plan_id",id);
+ List<DevicePurchasePlanItem> planItemList = itemMapper.selectList(queryWrapper);
+ plan.setPlanItemList(planItemList);
+ return plan;
+ }
+
+ @Override
+ public boolean updateByIdNew(DevicePurchasePlan devicePurchasePlan) {
+ baseMapper.updateById(devicePurchasePlan);
+ if (devicePurchasePlan.getPlanItemList() != null&&devicePurchasePlan.getPlanItemList().size()>0) {
+ devicePurchasePlan.getPlanItemList().forEach(item->{
+ item.setPlanId(devicePurchasePlan.getId());
+ if (item.getId()==null) {
+ itemMapper.insert(item);
+ }else {
+ itemMapper.updateById(item);
+ }
+ });
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanItemMapper.xml b/platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanItemMapper.xml
new file mode 100644
index 0000000..dd688f1
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanItemMapper.xml
@@ -0,0 +1,23 @@
+<?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.by4cloud.platformx.device.mapper.DevicePurchasePlanItemMapper">
+
+ <resultMap id="devicePurchasePlanItemMap" type="com.by4cloud.platformx.device.entity.DevicePurchasePlanItem">
+ <id property="id" column="id"/>
+ <result property="compId" column="comp_id"/>
+ <result property="deviceCode" column="device_code"/>
+ <result property="deviceId" column="device_id"/>
+ <result property="deviceModels" column="device_models"/>
+ <result property="deviceName" column="device_name"/>
+ <result property="keyParameter" column="key_parameter"/>
+ <result property="meteringUnit" column="metering_unit"/>
+ <result property="num" column="num"/>
+ <result property="planId" column="plan_id"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanMapper.xml b/platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanMapper.xml
new file mode 100644
index 0000000..db99b03
--- /dev/null
+++ b/platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanMapper.xml
@@ -0,0 +1,48 @@
+<?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.by4cloud.platformx.device.mapper.DevicePurchasePlanMapper">
+
+ <resultMap id="devicePurchasePlanMap" type="com.by4cloud.platformx.device.entity.DevicePurchasePlan">
+ <id property="id" column="id"/>
+ <result property="compId" column="comp_id"/>
+ <result property="planCode" column="plan_code"/>
+ <result property="planName" column="plan_name"/>
+ <result property="releaseCompId" column="release_comp_id"/>
+ <result property="releaseId" column="release_id"/>
+ <result property="status" column="status"/>
+ <result property="releaseTime" column="release_time"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+ <select id="page" resultType="com.by4cloud.platformx.device.entity.vo.DevicePurchasePlanPageVo">
+ select
+ dpp.id,
+ dpp.plan_code,
+ dpp.plan_name,
+ dpp.release_comp_id,
+ dpp.release_id,
+ dpp.status,
+ dpp.release_time,
+ su.name userName,
+ sd.name deptName
+ from
+ platformxx_device.device_purchase_plan dpp
+ join platformxx_boot.sys_user su on
+ su.user_id = dpp.release_id
+ join platformxx_boot.sys_dept sd on
+ sd.dept_id = dpp.release_comp_id
+ where
+ dpp.del_flag = '0'
+ <if test="queryDTO.planName != null and queryDTO.planName!=''">
+ and dpp.plan_name like CONCAT('%', #{queryDTO.planName}, '%')
+ </if>
+ <if test="queryDTO.planCode != null and queryDTO.planCode!=''">
+ and dpp.plan_code like CONCAT('%', #{queryDTO.planCode}, '%')
+ </if>
+ order by dpp.create_time desc
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml b/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
index e509be6..8c9400d 100644
--- a/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
+++ b/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
@@ -24,7 +24,8 @@
sd.name rentName,
di.device_number,
di.serial_no,
- dll.delivery_date
+ dll.delivery_date,
+ di.file_path
from
device_inventory di
join device_leasing_ledger_item dlli on
--
Gitblit v1.9.1