From c6db287f6c987060d615fd7ef5126511e051d5c6 Mon Sep 17 00:00:00 2001 From: shiyunteng <shiyunteng@example.com> Date: 星期日, 27 四月 2025 17:33:30 +0800 Subject: [PATCH] 盘点计划 盘点单 --- platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanScope.java | 29 + platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java | 14 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingRecordMapper.java | 16 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingPlanServiceImpl.java | 179 +++++++++ platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanUserMapper.java | 11 platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanScopeMapper.xml | 17 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java | 4 platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml | 19 + platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanUser.java | 27 + platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingPlanService.java | 22 + platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingPlanController.java | 171 +++++++++ platformx-device-biz/src/main/resources/mapper/DeviceStocktakingRecordMapper.xml | 69 +++ platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingRecordService.java | 8 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanMapper.java | 14 platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml | 16 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlan.java | 53 ++ platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceClassVo.java | 20 + platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java | 3 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanScopeMapper.java | 11 platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/StocktatingRecordVo.java | 19 + platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceStocktakingPlanVo.java | 36 ++ platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingRecordController.java | 119 ++++++ platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingRecord.java | 91 +++++ platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanMapper.xml | 60 +++ platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java | 5 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java | 7 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingRecordServiceImpl.java | 16 platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanUserMapper.xml | 17 28 files changed, 1,072 insertions(+), 1 deletions(-) diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlan.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlan.java new file mode 100644 index 0000000..b70bf4b --- /dev/null +++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlan.java @@ -0,0 +1,53 @@ +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 javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Transient; +import java.util.Date; +import java.util.List; + +@Data +@Entity +@TableName("device_stocktaking_plan") +@javax.persistence.Table(name = "device_stocktaking_plan") +@Table(appliesTo = "device_stocktaking_plan", comment = "璁惧鐩樼偣璁″垝") +public class DeviceStocktakingPlan extends BaseModel<DeviceStocktakingPlan> { + + @Schema(description = "璁″垝鍚嶇О") + @Column(columnDefinition="VARCHAR(128) comment '璁″垝鍚嶇О'") + private String planName; + + @JsonFormat(pattern = "yyyy-MM-dd") + @Schema(description = "鐩樼偣鍛ㄦ湡寮�濮�") + @Column(columnDefinition="VARCHAR(128) comment '鐩樼偣鍛ㄦ湡寮�濮�'") + private Date startDate; + + @JsonFormat(pattern = "yyyy-MM-dd") + @Schema(description = "鐩樼偣鍛ㄦ湡缁撴潫") + @Column(columnDefinition="VARCHAR(128) comment '鐩樼偣鍛ㄦ湡缁撴潫'") + private Date endDate; + + @Schema(description = "鐩樼偣璁″垝鐘舵��") + @Column(columnDefinition="int comment '鐩樼偣璁″垝鐘舵�� 0 寰呭鎵� 1 寰呯敓鎴愮洏鐐瑰崟 2 鐩樼偣涓� 3 瀹屾垚'") + private Integer planStatus; + + @Transient + @TableField(exist = false) + private List<Long> classIdList; + + @Transient + @TableField(exist = false) + private List<Long> userIdList; + + @Transient + @TableField(exist = false) + private String resultFlag; +} diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanScope.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanScope.java new file mode 100644 index 0000000..caaca79 --- /dev/null +++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanScope.java @@ -0,0 +1,29 @@ +package com.by4cloud.platformx.device.entity; + +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 javax.persistence.Column; +import javax.persistence.Entity; +import java.util.Date; + +@Data +@Entity +@TableName("device_stocktaking_plan_scope") +@javax.persistence.Table(name = "device_stocktaking_plan_scope") +@Table(appliesTo = "device_stocktaking_plan_scope", comment = "璁惧鐩樼偣璁″垝鑼冨洿") +public class DeviceStocktakingPlanScope extends BaseModel<DeviceStocktakingPlanScope> { + + @Schema(description = "鍏宠仈鐩樼偣璁″垝") + @Column(columnDefinition="bigint comment '鍏宠仈鐩樼偣璁″垝'") + private Long planId; + + @Schema(description = "鐩樼偣璁惧鍒嗙被ID") + @Column(columnDefinition="bigint comment '鐩樼偣璁惧鍒嗙被ID'") + private Long classId; + +} diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanUser.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanUser.java new file mode 100644 index 0000000..c217891 --- /dev/null +++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingPlanUser.java @@ -0,0 +1,27 @@ +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; + +@Data +@Entity +@TableName("device_stocktaking_plan_user") +@javax.persistence.Table(name = "device_stocktaking_plan_user") +@Table(appliesTo = "device_stocktaking_plan_user", comment = "璁惧鐩樼偣璁″垝浜哄憳") +public class DeviceStocktakingPlanUser extends BaseModel<DeviceStocktakingPlanUser> { + + @Schema(description = "鍏宠仈鐩樼偣璁″垝") + @Column(columnDefinition="bigint comment '鍏宠仈鐩樼偣璁″垝'") + private Long planId; + + @Schema(description = "鐩樼偣浜哄憳") + @Column(columnDefinition="bigint comment '鐩樼偣浜哄憳'") + private Long stocktakingUserId; + +} diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingRecord.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingRecord.java new file mode 100644 index 0000000..3b790b3 --- /dev/null +++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceStocktakingRecord.java @@ -0,0 +1,91 @@ +package com.by4cloud.platformx.device.entity; + +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 javax.persistence.Column; +import javax.persistence.Entity; +import java.util.Date; + +@Data +@Entity +@TableName("device_stocktaking_record") +@javax.persistence.Table(name = "device_stocktaking_record") +@Table(appliesTo = "device_stocktaking_record", comment = "璁惧鐩樼偣璁板綍") +public class DeviceStocktakingRecord extends BaseModel<DeviceStocktakingRecord> { + + @Schema(description = "鍏宠仈鐩樼偣璁″垝") + @Column(columnDefinition="bigint comment '鍏宠仈鐩樼偣璁″垝'") + private Long planId; + + @Schema(description = "鐩樼偣璁惧鍒嗙被ID") + @Column(columnDefinition="bigint comment '鐩樼偣璁惧鍒嗙被ID'") + private Long classId; + + /** + * 璁惧ID + */ + @Schema(description="璁惧ID") + @Column(columnDefinition="bigint comment '璁惧ID'") + private Long deviceId; + + /** + * 璁惧ID + */ + @Schema(description="璁惧鍒嗙被ID") + @Column(columnDefinition="bigint comment '璁惧鍒嗙被ID'") + private Long deviceClassId; + + /** + * 璁惧缂栫爜 + */ + @Schema(description="璁惧缂栫爜") + @Column(columnDefinition="VARCHAR(64) 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 serialNo; + + @Schema(description = "寮傚父鏍囪") + @Column(columnDefinition="int comment '寮傚父鏍囪 0 鏃� 1 鐩樼泩 2 鐩樹簭 3 浣嶇疆鍋忕Щ'") + private Integer abnormalMarking; + + @Schema(description = "瀛樻斁浣嶇疆") + @Column(columnDefinition="VARCHAR(256) comment '瀛樻斁浣嶇疆'") + private String position; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + @Schema(description = "鐩樼偣鏃堕棿") + @Column(columnDefinition="datetime comment '鐩樼偣鏃堕棿'") + private Date recordTime; + + @Schema(description = "鐩樼偣浜哄憳") + @Column(columnDefinition="bigint comment '鐩樼偣浜哄憳'") + private Long stocktakingUserId; + + @Schema(description = "杩囩▼鐓х墖") + @Column(columnDefinition="VARCHAR(256) comment '杩囩▼鐓х墖'") + private String recordPic; +} diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceClassVo.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceClassVo.java new file mode 100644 index 0000000..800e871 --- /dev/null +++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceClassVo.java @@ -0,0 +1,20 @@ +package com.by4cloud.platformx.device.entity.vo; + +import lombok.Data; + +@Data +public class DeviceClassVo { + + private Long classId; + + private Long deviceId; + + private String number; + + private String name; + + private String specification; + + private String serialNo; + +} diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceStocktakingPlanVo.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceStocktakingPlanVo.java new file mode 100644 index 0000000..b73f88a --- /dev/null +++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceStocktakingPlanVo.java @@ -0,0 +1,36 @@ +package com.by4cloud.platformx.device.entity.vo; + +import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class DeviceStocktakingPlanVo { + + private Long id; + + @Schema(description = "璁″垝鍚嶇О") + private String planName; + + @JsonFormat(pattern = "yyyy-MM-dd") + @Schema(description = "鐩樼偣鍛ㄦ湡寮�濮�") + private Date startDate; + + @JsonFormat(pattern = "yyyy-MM-dd") + @Schema(description = "鐩樼偣鍛ㄦ湡缁撴潫") + private Date endDate; + + private Integer planStatus; + + private String scopes; + + private List<Long> userIds; + + private String users; + + private List<DeviceStocktakingRecord> recordList; +} diff --git a/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/StocktatingRecordVo.java b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/StocktatingRecordVo.java new file mode 100644 index 0000000..ecf1d79 --- /dev/null +++ b/platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/StocktatingRecordVo.java @@ -0,0 +1,19 @@ +package com.by4cloud.platformx.device.entity.vo; + +import lombok.Data; + +@Data +public class StocktatingRecordVo { + + private String number; + + private String className; + + private String specification; + + private String deviceName; + + private Integer zmNum; + + private Integer pdNum; +} 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 index b5136e5..84a7c58 100644 --- 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 @@ -46,7 +46,7 @@ /** * 鍒嗛〉鏌ヨ * @param page 鍒嗛〉瀵硅薄 - * @param devicePurchasePlan 璁惧閲囪喘璁″垝 + * @param queryDTO 璁惧閲囪喘璁″垝 * @return */ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" ) @@ -109,6 +109,18 @@ return R.ok(devicePurchasePlanService.removeBatchByIds(CollUtil.toList(ids))); } + /** + * 閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝鏄庣粏 + * @param id + * @return R + */ + @Operation(summary = "閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝鏄庣粏" , description = "閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝鏄庣粏" ) + @SysLog("閫氳繃id鍒犻櫎璁惧閲囪喘璁″垝鏄庣粏" ) + @DeleteMapping("/removeItemById/{id}") + public R removeItemById(@PathVariable("id") Long id) { + return devicePurchasePlanService.removeItemById(id); + } + /** * 瀵煎嚭excel 琛ㄦ牸 diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingPlanController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingPlanController.java new file mode 100644 index 0000000..6b9a608 --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingPlanController.java @@ -0,0 +1,171 @@ +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.device.entity.DeviceStocktakingPlan; +import com.by4cloud.platformx.device.service.DeviceStocktakingPlanService; +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.List; +import java.util.Objects; + +/** + * 璁惧鐩樼偣璁″垝 + * + * @author syt + * @date 2025-04-24 15:19:13 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/deviceStocktakingPlan" ) +@Tag(description = "deviceStocktakingPlan" , name = "璁惧鐩樼偣璁″垝绠$悊" ) +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class DeviceStocktakingPlanController { + + private final DeviceStocktakingPlanService deviceStocktakingPlanService; + + /** + * 鍒嗛〉鏌ヨ + * @param page 鍒嗛〉瀵硅薄 + * @param deviceStocktakingPlan 璁惧鐩樼偣璁″垝 + * @return + */ + @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" ) + @GetMapping("/page" ) + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_view')" ) + public R getDeviceStocktakingPlanPage(@ParameterObject Page page, @ParameterObject DeviceStocktakingPlan deviceStocktakingPlan) { + LambdaQueryWrapper<DeviceStocktakingPlan> wrapper = Wrappers.lambdaQuery(); + wrapper.eq(StrUtil.isNotBlank(deviceStocktakingPlan.getPlanName()), DeviceStocktakingPlan::getPlanName,deviceStocktakingPlan.getPlanName()); + wrapper.eq(Objects.nonNull(deviceStocktakingPlan.getPlanStatus()),DeviceStocktakingPlan::getPlanStatus,deviceStocktakingPlan.getPlanStatus()); + wrapper.eq(StrUtil.isNotBlank(deviceStocktakingPlan.getResultFlag())&&"1".equals(deviceStocktakingPlan.getResultFlag()),DeviceStocktakingPlan::getPlanStatus,2) + .or().eq(StrUtil.isNotBlank(deviceStocktakingPlan.getResultFlag())&&"1".equals(deviceStocktakingPlan.getResultFlag()),DeviceStocktakingPlan::getPlanStatus,3); + wrapper.orderByDesc(DeviceStocktakingPlan::getCreateTime); + return R.ok(deviceStocktakingPlanService.page(page, wrapper)); + } + + + /** + * 閫氳繃id鏌ヨ璁惧鐩樼偣璁″垝 + * @param id id + * @return R + */ + @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" ) + @GetMapping("/{id}" ) + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_view')" ) + public R getById(@PathVariable("id" ) Long id) { + return deviceStocktakingPlanService.getByIdNew(id); + } + + /** + * 鏂板璁惧鐩樼偣璁″垝 + * @param deviceStocktakingPlan 璁惧鐩樼偣璁″垝 + * @return R + */ + @Operation(summary = "鏂板璁惧鐩樼偣璁″垝" , description = "鏂板璁惧鐩樼偣璁″垝" ) + @SysLog("鏂板璁惧鐩樼偣璁″垝" ) + @PostMapping + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_add')" ) + public R save(@RequestBody DeviceStocktakingPlan deviceStocktakingPlan) { + return deviceStocktakingPlanService.saveNew(deviceStocktakingPlan); + } + + /** + * 淇敼璁惧鐩樼偣璁″垝 + * @param deviceStocktakingPlan 璁惧鐩樼偣璁″垝 + * @return R + */ + @Operation(summary = "淇敼璁惧鐩樼偣璁″垝" , description = "淇敼璁惧鐩樼偣璁″垝" ) + @SysLog("淇敼璁惧鐩樼偣璁″垝" ) + @PutMapping + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_edit')" ) + public R updateById(@RequestBody DeviceStocktakingPlan deviceStocktakingPlan) { + return deviceStocktakingPlanService.updateByIdNew(deviceStocktakingPlan); + } + + /** + * 閫氳繃id鍒犻櫎璁惧鐩樼偣璁″垝 + * @param ids id鍒楄〃 + * @return R + */ + @Operation(summary = "閫氳繃id鍒犻櫎璁惧鐩樼偣璁″垝" , description = "閫氳繃id鍒犻櫎璁惧鐩樼偣璁″垝" ) + @SysLog("閫氳繃id鍒犻櫎璁惧鐩樼偣璁″垝" ) + @DeleteMapping + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_del')" ) + public R removeById(@RequestBody Long[] ids) { + return R.ok(deviceStocktakingPlanService.removeBatchByIds(CollUtil.toList(ids))); + } + + + /** + * 瀵煎嚭excel 琛ㄦ牸 + * @param deviceStocktakingPlan 鏌ヨ鏉′欢 + * @param ids 瀵煎嚭鎸囧畾ID + * @return excel 鏂囦欢娴� + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_export')" ) + public List<DeviceStocktakingPlan> export(DeviceStocktakingPlan deviceStocktakingPlan,Long[] ids) { + return deviceStocktakingPlanService.list(Wrappers.lambdaQuery(deviceStocktakingPlan).in(ArrayUtil.isNotEmpty(ids), DeviceStocktakingPlan::getId, ids)); + } + + /** + * 閫氳繃id瀹℃牳閫氳繃璁惧鐩樼偣璁″垝 + * @param id id + * @return R + */ + @Operation(summary = "閫氳繃id瀹℃牳閫氳繃璁惧鐩樼偣璁″垝" , description = "閫氳繃id瀹℃牳閫氳繃璁惧鐩樼偣璁″垝" ) + @GetMapping("/approved/{id}" ) + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_approved')" ) + public R approved(@PathVariable("id" ) Long id) { + return deviceStocktakingPlanService.approved(id); + } + + /** + * 閫氳繃鐩樼偣璁″垝id鐢熸垚鐩樼偣鍗� + * @param id id + * @return R + */ + @Operation(summary = "閫氳繃鐩樼偣璁″垝id鐢熸垚鐩樼偣鍗�" , description = "閫氳繃鐩樼偣璁″垝id鐢熸垚鐩樼偣鍗�" ) + @GetMapping("/genRecord/{id}" ) + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingPlan_genrecord')" ) + public R genRecord(@PathVariable("id" ) Long id) { + return deviceStocktakingPlanService.genRecord(id); + } + + /** + * 閫氳繃鐩樼偣璁″垝id鑾峰彇鐩樼偣缁撴灉 + * @param id id + * @return R + */ + @Operation(summary = "閫氳繃鐩樼偣璁″垝id鑾峰彇鐩樼偣缁撴灉" , description = "閫氳繃鐩樼偣璁″垝id鑾峰彇鐩樼偣缁撴灉" ) + @GetMapping("/getResult/{id}" ) + public R getResult(@PathVariable("id" ) Long id) { + return deviceStocktakingPlanService.getResult(id); + } + + /** + * 閫氳繃鐩樼偣璁″垝id瀹屾垚鐩樼偣缁撴灉 + * @param id id + * @return R + */ + @Operation(summary = "閫氳繃鐩樼偣璁″垝id瀹屾垚鐩樼偣缁撴灉" , description = "閫氳繃鐩樼偣璁″垝id瀹屾垚鐩樼偣缁撴灉" ) + @GetMapping("/complete/{id}" ) + public R complete(@PathVariable("id" ) Long id) { + return deviceStocktakingPlanService.complete(id); + } +} \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingRecordController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingRecordController.java new file mode 100644 index 0000000..4e3b0bc --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceStocktakingRecordController.java @@ -0,0 +1,119 @@ +package com.by4cloud.platformx.device.controller; + +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.device.entity.DeviceStocktakingRecord; +import com.by4cloud.platformx.device.service.DeviceStocktakingRecordService; +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.List; +import java.util.Objects; + +/** + * 璁惧鐩樼偣璁板綍 + * + * @author syt + * @date 2025-04-24 15:21:08 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/deviceStocktakingRecord" ) +@Tag(description = "deviceStocktakingRecord" , name = "璁惧鐩樼偣璁板綍绠$悊" ) +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class DeviceStocktakingRecordController { + + private final DeviceStocktakingRecordService deviceStocktakingRecordService; + + /** + * 鍒嗛〉鏌ヨ + * @param page 鍒嗛〉瀵硅薄 + * @param deviceStocktakingRecord 璁惧鐩樼偣璁板綍 + * @return + */ + @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" ) + @GetMapping("/page" ) + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_view')" ) + public R getDeviceStocktakingRecordPage(@ParameterObject Page page, @ParameterObject DeviceStocktakingRecord deviceStocktakingRecord) { + LambdaQueryWrapper<DeviceStocktakingRecord> wrapper = Wrappers.lambdaQuery(); + return R.ok(deviceStocktakingRecordService.page(page, wrapper)); + } + + + /** + * 閫氳繃id鏌ヨ璁惧鐩樼偣璁板綍 + * @param id id + * @return R + */ + @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" ) + @GetMapping("/{id}" ) + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_view')" ) + public R getById(@PathVariable("id" ) Long id) { + return R.ok(deviceStocktakingRecordService.getById(id)); + } + + /** + * 鏂板璁惧鐩樼偣璁板綍 + * @param deviceStocktakingRecord 璁惧鐩樼偣璁板綍 + * @return R + */ + @Operation(summary = "鏂板璁惧鐩樼偣璁板綍" , description = "鏂板璁惧鐩樼偣璁板綍" ) + @SysLog("鏂板璁惧鐩樼偣璁板綍" ) + @PostMapping + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_add')" ) + public R save(@RequestBody DeviceStocktakingRecord deviceStocktakingRecord) { + return R.ok(deviceStocktakingRecordService.save(deviceStocktakingRecord)); + } + + /** + * 淇敼璁惧鐩樼偣璁板綍 + * @param deviceStocktakingRecord 璁惧鐩樼偣璁板綍 + * @return R + */ + @Operation(summary = "淇敼璁惧鐩樼偣璁板綍" , description = "淇敼璁惧鐩樼偣璁板綍" ) + @SysLog("淇敼璁惧鐩樼偣璁板綍" ) + @PutMapping + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_edit')" ) + public R updateById(@RequestBody DeviceStocktakingRecord deviceStocktakingRecord) { + return R.ok(deviceStocktakingRecordService.updateById(deviceStocktakingRecord)); + } + + /** + * 閫氳繃id鍒犻櫎璁惧鐩樼偣璁板綍 + * @param ids id鍒楄〃 + * @return R + */ + @Operation(summary = "閫氳繃id鍒犻櫎璁惧鐩樼偣璁板綍" , description = "閫氳繃id鍒犻櫎璁惧鐩樼偣璁板綍" ) + @SysLog("閫氳繃id鍒犻櫎璁惧鐩樼偣璁板綍" ) + @DeleteMapping + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_del')" ) + public R removeById(@RequestBody Long[] ids) { + return R.ok(deviceStocktakingRecordService.removeBatchByIds(CollUtil.toList(ids))); + } + + + /** + * 瀵煎嚭excel 琛ㄦ牸 + * @param deviceStocktakingRecord 鏌ヨ鏉′欢 + * @param ids 瀵煎嚭鎸囧畾ID + * @return excel 鏂囦欢娴� + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('device_deviceStocktakingRecord_export')" ) + public List<DeviceStocktakingRecord> export(DeviceStocktakingRecord deviceStocktakingRecord,Long[] ids) { + return deviceStocktakingRecordService.list(Wrappers.lambdaQuery(deviceStocktakingRecord).in(ArrayUtil.isNotEmpty(ids), DeviceStocktakingRecord::getId, ids)); + } +} \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java index bdcb528..1ba8c67 100644 --- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceClassMapper.java @@ -3,9 +3,13 @@ import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.entity.DeviceClass; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface DeviceClassMapper extends PlatformxBaseMapper<DeviceClass> { + List<Long> selectEndNode(@Param("classId") Long classId); } diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java index 0db9e94..19e73cd 100644 --- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceInventoryMapper.java @@ -2,13 +2,18 @@ import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.entity.DeviceInventory; +import com.by4cloud.platformx.device.entity.vo.DeviceClassVo; import com.by4cloud.platformx.device.entity.vo.InventoryDetailVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface DeviceInventoryMapper extends PlatformxBaseMapper<DeviceInventory> { InventoryDetailVo getReleaseDetail(@Param("id") Long id); + + List<DeviceClassVo> selectListByClassId(@Param("classId") Long classId); } diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanMapper.java new file mode 100644 index 0000000..b611810 --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanMapper.java @@ -0,0 +1,14 @@ +package com.by4cloud.platformx.device.mapper; + +import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; +import com.by4cloud.platformx.device.entity.DeviceStocktakingPlan; +import com.by4cloud.platformx.device.entity.vo.DeviceStocktakingPlanVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface DeviceStocktakingPlanMapper extends PlatformxBaseMapper<DeviceStocktakingPlan> { + + + DeviceStocktakingPlanVo selectVoById(@Param("id") Long id); +} \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanScopeMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanScopeMapper.java new file mode 100644 index 0000000..08271dc --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanScopeMapper.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.DeviceStocktakingPlanScope; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DeviceStocktakingPlanScopeMapper extends PlatformxBaseMapper<DeviceStocktakingPlanScope> { + + +} \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanUserMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanUserMapper.java new file mode 100644 index 0000000..d7c4aed --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingPlanUserMapper.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.DeviceStocktakingPlanUser; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DeviceStocktakingPlanUserMapper extends PlatformxBaseMapper<DeviceStocktakingPlanUser> { + + +} \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingRecordMapper.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingRecordMapper.java new file mode 100644 index 0000000..c9f978e --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DeviceStocktakingRecordMapper.java @@ -0,0 +1,16 @@ +package com.by4cloud.platformx.device.mapper; + +import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; +import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord; +import com.by4cloud.platformx.device.entity.vo.StocktatingRecordVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface DeviceStocktakingRecordMapper extends PlatformxBaseMapper<DeviceStocktakingRecord> { + + + List<StocktatingRecordVo> selectStocktatingResultByPlanId(@Param("id") Long id); +} \ 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 index 2176343..4160720 100644 --- 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 @@ -3,6 +3,7 @@ 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.common.core.util.R; import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO; import com.by4cloud.platformx.device.entity.DevicePurchasePlan; @@ -17,4 +18,6 @@ DevicePurchasePlan getByIdNew(Long id); boolean updateByIdNew(DevicePurchasePlan devicePurchasePlan); + + R removeItemById(Long id); } \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingPlanService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingPlanService.java new file mode 100644 index 0000000..d43b236 --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingPlanService.java @@ -0,0 +1,22 @@ +package com.by4cloud.platformx.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.by4cloud.platformx.common.core.util.R; +import com.by4cloud.platformx.device.entity.DeviceStocktakingPlan; + +public interface DeviceStocktakingPlanService extends IService<DeviceStocktakingPlan> { + + R saveNew(DeviceStocktakingPlan deviceStocktakingPlan); + + R approved(Long id); + + R genRecord(Long id); + + R getResult(Long id); + + R getByIdNew(Long id); + + R complete(Long id); + + R updateByIdNew(DeviceStocktakingPlan deviceStocktakingPlan); +} \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingRecordService.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingRecordService.java new file mode 100644 index 0000000..87c3612 --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceStocktakingRecordService.java @@ -0,0 +1,8 @@ +package com.by4cloud.platformx.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord; + +public interface DeviceStocktakingRecordService extends IService<DeviceStocktakingRecord> { + +} \ 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 index fd7a9c6..6a07206 100644 --- 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 @@ -4,6 +4,7 @@ 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.core.util.R; import com.by4cloud.platformx.common.security.util.SecurityUtils; import com.by4cloud.platformx.device.constant.CommonStatusContant; import com.by4cloud.platformx.device.constant.MaxSizeContant; @@ -89,4 +90,10 @@ } return true; } + + @Override + public R removeItemById(Long id) { + itemMapper.deleteById(id); + return R.ok(); + } } \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingPlanServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingPlanServiceImpl.java new file mode 100644 index 0000000..bdbcc64 --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingPlanServiceImpl.java @@ -0,0 +1,179 @@ +package com.by4cloud.platformx.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.by4cloud.platformx.common.core.util.R; +import com.by4cloud.platformx.device.constant.CommonStatusContant; +import com.by4cloud.platformx.device.entity.*; +import com.by4cloud.platformx.device.entity.vo.DeviceClassVo; +import com.by4cloud.platformx.device.entity.vo.DeviceStocktakingPlanVo; +import com.by4cloud.platformx.device.entity.vo.StocktatingRecordVo; +import com.by4cloud.platformx.device.mapper.*; +import com.by4cloud.platformx.device.service.DeviceStocktakingPlanService; +import lombok.AllArgsConstructor; + +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + + +/** + * 璁惧鐩樼偣璁″垝 + * + * @author syt + * @date 2025-04-24 15:19:13 + */ +@Service +@AllArgsConstructor +public class DeviceStocktakingPlanServiceImpl extends ServiceImpl<DeviceStocktakingPlanMapper, DeviceStocktakingPlan> implements DeviceStocktakingPlanService { + + private final DeviceStocktakingPlanScopeMapper scopeMapper; + private final DeviceStocktakingPlanUserMapper userMapper; + private final DeviceInventoryMapper inventoryMapper; + private final DeviceStocktakingRecordMapper recordMapper; + + @Override + public R saveNew(DeviceStocktakingPlan deviceStocktakingPlan) { + deviceStocktakingPlan.setPlanStatus(CommonStatusContant.DEVICE_STOCKTAKING_STATUS_APPROVED); + baseMapper.insert(deviceStocktakingPlan); + //鏂板鐩樼偣浜哄憳 + if (deviceStocktakingPlan.getUserIdList().size()>0){ + deviceStocktakingPlan.getUserIdList().stream().forEach(userId->{ + DeviceStocktakingPlanUser planUser = new DeviceStocktakingPlanUser(); + planUser.setPlanId(deviceStocktakingPlan.getId()); + planUser.setStocktakingUserId(userId); + userMapper.insert(planUser); + }); + } + //鏂板鍒ゆ柇鑼冨洿 + if (deviceStocktakingPlan.getClassIdList().size()>0){ +// List<Long> classArr = new ArrayList<>(); +// for (Long classId:deviceStocktakingPlan.getClassIdList() +// ) { +// List<Long> classes = classMapper.selectEndNode(classId); +// //鏍规嵁鍒嗙被iD 鏌ヨ鍑烘墍鏈夋湯绔垎绫籌D骞跺幓閲� +// classArr = ListUtils.union(classArr,classes).stream().distinct().collect(Collectors.toList()); +// } +// if (classArr.size()>0){ +// classArr.stream().forEach(classId->{ +// DeviceStocktakingPlanScope planScope = new DeviceStocktakingPlanScope(); +// planScope.setPlanId(deviceStocktakingPlan.getId()); +// planScope.setClassId(classId); +// scopeMapper.insert(planScope); +// }); +// } + deviceStocktakingPlan.getClassIdList().stream().forEach(classId->{ + DeviceStocktakingPlanScope planScope = new DeviceStocktakingPlanScope(); + planScope.setPlanId(deviceStocktakingPlan.getId()); + planScope.setClassId(classId); + scopeMapper.insert(planScope); + }); + + } + return R.ok(); + } + + @Override + public R approved(Long id) { + DeviceStocktakingPlan plan = baseMapper.selectById(id); + plan.setPlanStatus(CommonStatusContant.DEVICE_STOCKTAKING_STATUS_GEN); + baseMapper.updateById(plan); + return R.ok(); + } + + @Override + public R genRecord(Long id) { + QueryWrapper<DeviceStocktakingPlanScope> queryMapper = new QueryWrapper<>(); + queryMapper.eq("plan_id",id); + List<DeviceStocktakingPlanScope> scopeList = scopeMapper.selectList(queryMapper); + if (scopeList.size()>0){ + scopeList.stream().forEach(scopeItem->{ + List<DeviceClassVo> deviceClassVos = inventoryMapper.selectListByClassId(scopeItem.getClassId()); + if (deviceClassVos.size()>0) { + deviceClassVos.stream().forEach(vo->{ + DeviceStocktakingRecord record = new DeviceStocktakingRecord(); + record.setPlanId(id); + record.setClassId(vo.getClassId()); + record.setDeviceClassId(vo.getClassId()); + record.setDeviceId(vo.getDeviceId()); + record.setDeviceName(vo.getName()); + record.setDeviceCode(vo.getNumber()); + record.setDeviceModels(vo.getSpecification()); + record.setSerialNo(vo.getSerialNo()); + recordMapper.insert(record); + }); + } + }); + } + //鏇存柊璁″垝鐘舵�� + DeviceStocktakingPlan plan = baseMapper.selectById(id); + plan.setPlanStatus(CommonStatusContant.DEVICE_STOCKTAKING_STATUS_STOCKTATING); + baseMapper.updateById(plan); + return R.ok(); + } + + @Override + public R getResult(Long id) { + List<StocktatingRecordVo> recordVoList = recordMapper.selectStocktatingResultByPlanId(id); + return R.ok(recordVoList); + } + + @Override + public R getByIdNew(Long id) { + DeviceStocktakingPlanVo vo = baseMapper.selectVoById(id); + if (vo!=null){ + QueryWrapper<DeviceStocktakingRecord> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("plan_id",id); + List<DeviceStocktakingRecord> recordList = recordMapper.selectList(queryWrapper); + vo.setRecordList(recordList); + QueryWrapper<DeviceStocktakingPlanUser> userQueryWrapper = new QueryWrapper<>(); + userQueryWrapper.eq("plan_id",id); + List<DeviceStocktakingPlanUser> userList = userMapper.selectList(userQueryWrapper); + if (userList.size()>0) { + List<Long> userIds = userList.stream().map(DeviceStocktakingPlanUser::getStocktakingUserId).collect(Collectors.toList()); + vo.setUserIds(userIds); + } + } + return R.ok(vo); + } + + @Override + public R complete(Long id) { + DeviceStocktakingPlan plan = baseMapper.selectById(id); + plan.setPlanStatus(CommonStatusContant.DEVICE_STOCKTAKING_STATUS_COMPLETE); + baseMapper.updateById(plan); + return R.ok(); + } + + @Override + public R updateByIdNew(DeviceStocktakingPlan deviceStocktakingPlan) { + baseMapper.updateById(deviceStocktakingPlan); + //鏂板鐩樼偣浜哄憳 + if (deviceStocktakingPlan.getUserIdList().size()>0){ + QueryWrapper<DeviceStocktakingPlanUser> userQueryWrapper = new QueryWrapper<>(); + userQueryWrapper.eq("plan_id",deviceStocktakingPlan.getId()); + userMapper.delete(userQueryWrapper); + deviceStocktakingPlan.getUserIdList().stream().forEach(userId->{ + DeviceStocktakingPlanUser planUser = new DeviceStocktakingPlanUser(); + planUser.setPlanId(deviceStocktakingPlan.getId()); + planUser.setStocktakingUserId(userId); + userMapper.insert(planUser); + }); + } + //鏂板鍒ゆ柇鑼冨洿 + if (deviceStocktakingPlan.getClassIdList().size()>0){ + QueryWrapper<DeviceStocktakingPlanScope> scopeQueryWrapper = new QueryWrapper<>(); + scopeQueryWrapper.eq("plan_id",deviceStocktakingPlan.getId()); + scopeMapper.delete(scopeQueryWrapper); + deviceStocktakingPlan.getClassIdList().stream().forEach(classId->{ + DeviceStocktakingPlanScope planScope = new DeviceStocktakingPlanScope(); + planScope.setPlanId(deviceStocktakingPlan.getId()); + planScope.setClassId(classId); + scopeMapper.insert(planScope); + }); + + } + return R.ok(); + } +} \ No newline at end of file diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingRecordServiceImpl.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingRecordServiceImpl.java new file mode 100644 index 0000000..5236cf8 --- /dev/null +++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceStocktakingRecordServiceImpl.java @@ -0,0 +1,16 @@ +package com.by4cloud.platformx.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.by4cloud.platformx.device.entity.DeviceStocktakingRecord; +import com.by4cloud.platformx.device.mapper.DeviceStocktakingRecordMapper; +import com.by4cloud.platformx.device.service.DeviceStocktakingRecordService; +import org.springframework.stereotype.Service; +/** + * 璁惧鐩樼偣璁板綍 + * + * @author syt + * @date 2025-04-24 15:21:08 + */ +@Service +public class DeviceStocktakingRecordServiceImpl extends ServiceImpl<DeviceStocktakingRecordMapper, DeviceStocktakingRecord> implements DeviceStocktakingRecordService { +} \ No newline at end of file diff --git a/platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml index 0d83cf6..bc6fea9 100644 --- a/platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml +++ b/platformx-device-biz/src/main/resources/mapper/DeviceClassMapper.xml @@ -18,4 +18,23 @@ <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> + <select id="selectEndNode" resultType="java.lang.Long"> + SELECT parent.id + FROM ( + SELECT t1.* + FROM device_class t1 + WHERE FIND_IN_SET(t1.id, ( + SELECT GROUP_CONCAT(id) + FROM ( + SELECT id, IF(FIND_IN_SET(p_id, @pids) > 0, @pids := CONCAT(@pids, ',', id), 0) AS is_child + FROM device_class, (SELECT @pids := #{classId}) tmp + ORDER BY p_id + ) t + WHERE is_child != 0 + )) OR t1.id = #{classId} + ) parent + LEFT JOIN device_class child ON parent.id = child.p_id + WHERE child.id IS NULL; -- 楠岃瘉鏄惁涓烘湯绔妭鐐� + + </select> </mapper> diff --git a/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanMapper.xml new file mode 100644 index 0000000..6aca0e6 --- /dev/null +++ b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanMapper.xml @@ -0,0 +1,60 @@ +<?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.DeviceStocktakingPlanMapper"> + + <resultMap id="deviceStocktakingPlanMap" type="com.by4cloud.platformx.device.entity.DeviceStocktakingPlan"> + <id property="id" column="id"/> + <result property="compId" column="comp_id"/> + <result property="endDate" column="end_date"/> + <result property="planName" column="plan_name"/> + <result property="planStatus" column="plan_status"/> + <result property="startDate" column="start_date"/> + <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="selectVoById" resultType="com.by4cloud.platformx.device.entity.vo.DeviceStocktakingPlanVo"> + + select + dsp.id, + dsp.plan_name, + dsp.start_date, + dsp.end_date, + dsp.plan_status, + ( + select + GROUP_CONCAT(name) + from + platformxx_boot.sys_user su + where + exists ( + select + * + from + device_stocktaking_plan_user dspu + where + dspu.stocktaking_user_id = su.user_id + and dspu.plan_id = dsp.id)) users, + ( + select + GROUP_CONCAT(name) + from + device_class dc + where + exists ( + select + * + from + device_stocktaking_plan_scope dsps + where + dsps.class_id = dc.id + and dsps.plan_id = dsp.id)) scopes + from + device_stocktaking_plan dsp + where + dsp.id = #{id} + </select> +</mapper> \ No newline at end of file diff --git a/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanScopeMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanScopeMapper.xml new file mode 100644 index 0000000..64fef8a --- /dev/null +++ b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanScopeMapper.xml @@ -0,0 +1,17 @@ +<?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.DeviceStocktakingPlanScopeMapper"> + + <resultMap id="deviceStocktakingPlanScopeMap" type="com.by4cloud.platformx.device.entity.DeviceStocktakingPlanScope"> + <id property="id" column="id"/> + <result property="compId" column="comp_id"/> + <result property="classId" column="class_id"/> + <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/DeviceStocktakingPlanUserMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanUserMapper.xml new file mode 100644 index 0000000..9709832 --- /dev/null +++ b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingPlanUserMapper.xml @@ -0,0 +1,17 @@ +<?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.DeviceStocktakingPlanUserMapper"> + + <resultMap id="deviceStocktakingPlanUserMap" type="com.by4cloud.platformx.device.entity.DeviceStocktakingPlanUser"> + <id property="id" column="id"/> + <result property="compId" column="comp_id"/> + <result property="planId" column="plan_id"/> + <result property="stocktakingUserId" column="stocktaking_user_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/DeviceStocktakingRecordMapper.xml b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingRecordMapper.xml new file mode 100644 index 0000000..4c096ad --- /dev/null +++ b/platformx-device-biz/src/main/resources/mapper/DeviceStocktakingRecordMapper.xml @@ -0,0 +1,69 @@ +<?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.DeviceStocktakingRecordMapper"> + + <resultMap id="deviceStocktakingRecordMap" type="com.by4cloud.platformx.device.entity.DeviceStocktakingRecord"> + <id property="id" column="id"/> + <result property="compId" column="comp_id"/> + <result property="classId" column="class_id"/> + <result property="deviceClassId" column="device_class_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="planId" column="plan_id"/> + <result property="position" column="position"/> + <result property="recordPic" column="record_pic"/> + <result property="recordTime" column="record_time"/> + <result property="serialNo" column="serial_no"/> + <result property="stocktakingUserId" column="stocktaking_user_id"/> + <result property="abnormalMarking" column="abnormal_marking"/> + <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="selectStocktatingResultByPlanId" + resultType="com.by4cloud.platformx.device.entity.vo.StocktatingRecordVo"> + select + d.class_id , + dc.name className, + d.number , + d.name deviceName, + d.specification, + count(serial_no) zmNum, + ( + select + count(1) + from + device_stocktaking_record dsr + where + dsr.class_id = d.class_id + and dsr.abnormal_marking = 0) pdNum + from + device_inventory di + join device d on + d.id = di.device_id + join device_class dc on + d.class_id = dc.id + where + di.del_flag = '0' + and exists ( + select + * + from + device_stocktaking_plan_scope dsps + where + dsps.class_id = d.class_id + and dsps.plan_id = #{id} + ) + group by + d.class_id , + dc.name , + d.number , + d.name, + d.specification + </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 8c9400d..6c4477f 100644 --- a/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml +++ b/platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml @@ -39,4 +39,20 @@ where di.id =#{id} </select> + <select id="selectListByClassId" resultType="com.by4cloud.platformx.device.entity.vo.DeviceClassVo"> + select + di.device_id , + d.class_id , + d.number , + d.name, + d.specification, + di.serial_no + from + device_inventory di + join device d on + d.id = di.device_id + where + di.del_flag = '0' + and d.class_id = #{classId} + </select> </mapper> -- Gitblit v1.9.1