shiyunteng
2025-04-23 fc8c86e7a365d5c6bdc37c2b05b9f83115ac2bc3
巡检任务  设备维修新增是否生成工单
18个文件已修改
7个文件已添加
813 ■■■■■ 已修改文件
platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/CommonStatusContant.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ResidualRecycle.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceRepairController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceScrapController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ResidualRecycleController.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/WorkOrderController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ResidualRecycleMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceInventoryService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ResidualRecycleService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/WorkOrderService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceInventoryServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceRepairServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceScrapServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionPlanServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionTaskServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ResidualRecycleServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/WorkOrderServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/resources/mapper/ResidualRecycleMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/CommonStatusContant.java
New file
@@ -0,0 +1,164 @@
package com.by4cloud.platformx.device.constant;
import javax.persistence.criteria.CriteriaBuilder;
public interface CommonStatusContant {
    /**
     * 残体回收-待审批
     */
    Integer RESIDUAL_RECYCLE_STATUS_PENDING_APPROVAL = 1;
    /**
     * 残体回收-处理中
     */
    Integer RESIDUAL_RECYCLE_STATUS_HANDLING = 2;
    /**
     * 残体回收-待审批
     */
    Integer RESIDUAL_RECYCLE_STATUS_COMPLETE = 3;
    /**
     * 设备库存-可用
     */
    Integer DEVICE_INVENTORY_USABLE = 1;
    /**
     * 设备库存-租赁中
     */
    Integer DEVICE_INVENTORY_RENTING = 2;
    /**
     * 设备库存- 维修中
     */
    Integer DEVICE_INVENTORY_REPAIRING = 3;
    /**
     * 设备库存-报废
     */
    Integer DEVICE_INVENTORY_SCRAPING = 4;
    /**
     * 设备库存-残值回收
     */
    Integer DEVICE_INVENTORY_RECYCLE = 5;
    /**
     * 残体回收-拆解回收
     */
    Integer RESIDUAL_RECYCLE_METHOD_DISASSEMBE_RECYCLE = 1;
    /**
     * 残体回收-专业机构移交
     */
    Integer RESIDUAL_RECYCLE_METHOD_TRANSFER_PROFESSIONAL_INSTITUTION = 2;
    /**
     * 残体回收-再租赁流转
     */
    Integer RESIDUAL_RECYCLE_METHOD_CYCLE_RENTING = 3;
    /**
     * 合同-待审批
     */
    Integer CONTRACT_STATUS_PENDING_APPROVAL = 0;
    /**
     * 合同-已审批
     */
    Integer CONTRACT_STATUS_APPROVED = 1;
    /**
     * 合同-完成
     */
    Integer CONTRACT_STATUS_COMPLETE = 2;
    /**
     * 合同-作废审批
     */
    Integer CONTRACT_STATUS_INVALID_PENDING_APPROVAL = 3;
    /**
     * 合同-作废
     */
    Integer CONTRACT_STATUS_INVALID = 4;
    /**
     * 库存流水-入库
     */
    Integer DEVICE_INVENTORY_FLOW_WATER_IN= 2;
    /**
     * 库存流水-出库
     */
    Integer DEVICE_INVENTORY_FLOW_WATER_OUT= 1;
    /**
     * 库存类型-仓库
     */
    Integer DEVICE_INVENTORY_RESOURCE_WAREHOUSE= 1;
    /**
     * 库存类型-购买
     */
    Integer DEVICE_INVENTORY_RESOURCE_BUGING= 2;
    /**
     * 库存类型-购买
     */
    Integer DEVICE_INVENTORY_RESOURCE_UNUSED= 3;
    /**
     * 巡检任务-未开始
     */
    Integer INSPECTION_TASK_NO_STARTED= 0;
    /**
     * 巡检任务-巡检中
     */
    Integer INSPECTION_TASK_DURING_INSPECTION= 1;
    /**
     * 巡检任务-完成
     */
    Integer INSPECTION_TASK_COMPLETE= 2;
    /**
     * 工单状态-待分配
     */
    Integer WORK_ORDER_STATUS_ALLOCATED= 1;
    /**
     * 工单状态-处理中
     */
    Integer WORK_ORDER_STATUS_HANDLING= 2;
    /**
     * 工单状态-已关闭
     */
    Integer WORK_ORDER_STATUS_CLOSING= 3;
    /**
     * 设备维修状态-待审批
     */
    Integer DEVICE_REPAIR_STATUS_PANDING_APPROVAL= 1;
    /**
     * 设备维修状态-维修中
     */
    Integer DEVICE_REPAIR_STATUS_REPAIRING= 2;
    /**
     * 设备维修状态-完成
     */
    Integer DEVICE_REPAIR_STATUS_COMPLETE= 3;
    /**
     * 设备报废状态-待审批
     */
    Integer DEVICE_SCRAP_STATUS_PANDING_APPROVAL= 1;
    /**
     * 设备报废状态-维修中
     */
    Integer DEVICE_SCRAP_STATUS_COMPLETE= 2;
    /**
     * 巡检计划-生成任务标识
     */
    Integer INSPECTION_PLAN_FLAG_GEN_Y = 1;
    /**
     * 巡检计划-生成任务标识
     */
    Integer INSPECTION_PLAN_FLAG_GEN_N = 0;
    /**
     * 巡检计划-生成任务标识
     */
    Integer DEVICE_REPAIR_FLAG_N = 0;
    /**
     * 巡检计划-生成任务标识
     */
    Integer DEVICE_REPAIR_FLAG_Y = 1;
    /**
     * 工单类型-报修
     */
    Integer WORK_ORDER_TYPE_REPAIR = 1;
    /**
     * 设备采购计划状态-待审批
     */
    Integer DEVICE_PURCHASE_STATUS_PANDING_APPROVAL = 0;
    /**
     * 设备采购计划状态-待审批
     */
    Integer DEVICE_PURCHASE_STATUS_APPROVED = 1;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ResidualRecycle.java
New file
@@ -0,0 +1,128 @@
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.math.BigDecimal;
import java.util.Date;
@Data
@Entity
@TableName("residual_recycle")
@javax.persistence.Table(name = "residual_recycle")
@Table(appliesTo = "residual_recycle", comment = "残体回收")
public class ResidualRecycle extends BaseModel<ResidualRecycle> {
    /**
     * 设备ID
     */
    @Schema(description="设备ID")
    @Column(columnDefinition="bigint comment '设备ID'")
    private Long deviceId;
    /**
     * 设备编码
     */
    @Schema(description="设备编码")
    @Column(columnDefinition="VARCHAR(16) 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(32) comment '计量单位'")
    private String meteringUnit;
    /**
     * 设备序列号
     */
    @Schema(description="设备序列号")
    @Column(columnDefinition="VARCHAR(256) comment '设备序列号'")
    private String serialNo;
    /**
     * 初始价值
     */
    @Schema(description="初始价值")
    @Column(columnDefinition="decimal(10,2) comment '初始价值'")
    private BigDecimal initialValue;
    /**
     * 累计折旧
     */
    @Schema(description="累计折旧")
    @Column(columnDefinition="decimal(10,2) comment '累计折旧'")
    private BigDecimal accumulatedDepreciation;
    /**
     * 处置方式
     */
    @Schema(description="处置方式")
    @Column(columnDefinition="int comment '处置方式 1 拆解回收 2 专业机构移交 3 再租赁流转'")
    private Integer handleMethod;
    /**
     * 处置机构
     */
    @Schema(description="处置机构")
    @Column(columnDefinition="VARCHAR(256) comment '处置机构'")
    private String handleOrgan;
    /**
     * 残值测算
     */
    @Schema(description="残值测算")
    @Column(columnDefinition="decimal(10,2) comment '残值测算'")
    private BigDecimal residualCalculation;
    /**
     * 实际回收
     */
    @Schema(description="实际回收")
    @Column(columnDefinition="decimal(10,2) comment '实际回收'")
    private BigDecimal actualResidual;
    /**
     * 回收登记日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "回收登记日期")
    @Column(columnDefinition="datetime comment '回收登记日期'")
    private Date registrationDate;
    /**
     * 财务核销日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "财务核销日期")
    @Column(columnDefinition="datetime comment '财务核销日期'")
    private Date verificationDate;
    /**
     * 状态
     */
    @Schema(description = "状态")
    @Column(columnDefinition="int comment '状态 1 待审批 2 处理中 3 已完成'")
    private Integer status;
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.java
@@ -133,6 +133,7 @@
     * @param id id
     * @return R
     */
    @SysLog("审批通过合同" )
    @Operation(summary = "审批通过合同" , description = "审批通过合同" )
    @GetMapping("/approved/{id}" )
    public R approved(@PathVariable("id" ) Long id) {
@@ -149,4 +150,29 @@
        return R.ok(contractService.getApprovedContractList());
    }
    /**
     * 合同申请作废
     * @param id id
     * @return R
     */
    @SysLog("合同申请作废" )
    @Operation(summary = "合同申请作废" , description = "合同申请作废" )
    @GetMapping("/approvelInvalid/{id}" )
    @PreAuthorize("@pms.hasPermission('platformx_contract_zfsq')")
    public R approvelInvalid(@PathVariable("id" ) Long id) {
        return contractService.approvelInvalid(id);
    }
    /**
     * 合同申请作废
     * @param id id
     * @return R
     */
    @SysLog("合同作废" )
    @Operation(summary = "合同作废" , description = "合同作废" )
    @GetMapping("/invalidById/{id}" )
    @PreAuthorize("@pms.hasPermission('platformx_contract_zf')")
    public R invalidById(@PathVariable("id" ) Long id) {
        return contractService.invalidById(id);
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java
@@ -2,6 +2,7 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -52,6 +53,7 @@
        wrapper.like(StringUtils.isNotBlank(deviceInventory.getDeviceNumber()),DeviceInventory::getDeviceNumber,deviceInventory.getDeviceNumber());
        wrapper.like(StringUtils.isNotBlank(deviceInventory.getSerialNo()),DeviceInventory::getSerialNo,deviceInventory.getSerialNo());
        wrapper.like(StringUtils.isNotBlank(deviceInventory.getName()),DeviceInventory::getName,deviceInventory.getName());
        wrapper.eq(StringUtils.checkValNotNull(deviceInventory.getInventoryStatus()),DeviceInventory::getInventoryStatus,deviceInventory.getInventoryStatus());
        wrapper.orderByDesc(DeviceInventory::getCreateTime);
        return R.ok(deviceInventoryService.page(page, wrapper));
    }
@@ -147,7 +149,7 @@
    }
    /**
     * 设备下所有序列号下拉
     * 设备下所有可用序列号下拉
     * @return
     */
    @GetMapping("/getDropdowmList/{deviceId}" )
@@ -155,6 +157,18 @@
        QueryWrapper<DeviceInventory> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("device_id",deviceId);
        queryWrapper.eq("inventory_status","1");
        return R.ok(deviceInventoryService.list(queryWrapper));
    }
    /**
     * 设备下所有报废序列号下拉
     * @return
     */
    @GetMapping("/getDropdowmScrapList/{deviceId}" )
    public R getDropdowmScrapList(@PathVariable("deviceId")Long deviceId) {
        QueryWrapper<DeviceInventory> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("device_id",deviceId);
        queryWrapper.eq("inventory_status","4");
        return R.ok(deviceInventoryService.list(queryWrapper));
    }
@@ -168,13 +182,24 @@
    }
    /**
     * 修改库存表
     * 设备更新照片
     * @param deviceInventory 库存表
     * @return R
     */
    @SysLog("修改库存表" )
    @SysLog("设备更新照片" )
    @PutMapping("/uploadPic")
    public R uploadPic(@RequestBody DeviceInventory deviceInventory) {
        return R.ok(deviceInventoryService.updateById(deviceInventory));
    }
    /**
     * 修改库存表
     * @param id 库存表
     * @return R
     */
    @SysLog("设备归还入库" )
    @GetMapping("/return/{id}")
    public R returnDevice(@PathVariable("id")Long id) {
        return deviceInventoryService.returnDevice(id);
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceRepairController.java
@@ -6,6 +6,7 @@
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.constant.CommonStatusContant;
import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO;
import com.by4cloud.platformx.device.entity.DeviceInventory;
import com.by4cloud.platformx.device.entity.DeviceRepair;
@@ -74,8 +75,8 @@
    @PostMapping
    @PreAuthorize("@pms.hasPermission('device_deviceRepair_add')" )
    public R save(@RequestBody DeviceRepair deviceRepair) {
        deviceRepair.setStatus(1);
        deviceRepair.setWoFlag(0);
        deviceRepair.setStatus(CommonStatusContant.DEVICE_REPAIR_STATUS_PANDING_APPROVAL);
        deviceRepair.setWoFlag(CommonStatusContant.DEVICE_REPAIR_FLAG_N);
        return R.ok(deviceRepairService.save(deviceRepair));
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceScrapController.java
@@ -6,6 +6,7 @@
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.constant.CommonStatusContant;
import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO;
import com.by4cloud.platformx.device.entity.DeviceScrap;
import com.by4cloud.platformx.device.service.DeviceScrapService;
@@ -72,7 +73,7 @@
    @PostMapping
    @PreAuthorize("@pms.hasPermission('device_deviceScrap_add')" )
    public R save(@RequestBody DeviceScrap deviceScrap) {
        deviceScrap.setStatus(1);
        deviceScrap.setStatus(CommonStatusContant.DEVICE_SCRAP_STATUS_PANDING_APPROVAL);
        return R.ok(deviceScrapService.save(deviceScrap));
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ResidualRecycleController.java
New file
@@ -0,0 +1,138 @@
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.constant.CommonStatusContant;
import com.by4cloud.platformx.device.entity.ResidualRecycle;
import com.by4cloud.platformx.device.service.ResidualRecycleService;
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-23 10:28:34
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/residualRecycle" )
@Tag(description = "residualRecycle" , name = "残体回收管理" )
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class ResidualRecycleController {
    private final  ResidualRecycleService residualRecycleService;
    /**
     * 分页查询
     * @param page 分页对象
     * @param residualRecycle 残体回收
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/page" )
    @PreAuthorize("@pms.hasPermission('device_residualRecycle_view')" )
    public R getResidualRecyclePage(@ParameterObject Page page, @ParameterObject ResidualRecycle residualRecycle) {
        LambdaQueryWrapper<ResidualRecycle> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(StrUtil.isNotBlank(residualRecycle.getDeviceName()),ResidualRecycle::getDeviceName,residualRecycle.getDeviceName());
        wrapper.eq(Objects.nonNull(residualRecycle.getStatus()),ResidualRecycle::getStatus,residualRecycle.getStatus());
        wrapper.orderByDesc(ResidualRecycle::getCreateTime);
        return R.ok(residualRecycleService.page(page, wrapper));
    }
    /**
     * 通过id查询残体回收
     * @param id id
     * @return R
     */
    @Operation(summary = "通过id查询" , description = "通过id查询" )
    @GetMapping("/{id}" )
    @PreAuthorize("@pms.hasPermission('device_residualRecycle_view')" )
    public R getById(@PathVariable("id" ) Long id) {
        return R.ok(residualRecycleService.getById(id));
    }
    /**
     * 新增残体回收
     * @param residualRecycle 残体回收
     * @return R
     */
    @Operation(summary = "新增残体回收" , description = "新增残体回收" )
    @SysLog("新增残体回收" )
    @PostMapping
    @PreAuthorize("@pms.hasPermission('device_residualRecycle_add')" )
    public R save(@RequestBody ResidualRecycle residualRecycle) {
        residualRecycle.setStatus(CommonStatusContant.RESIDUAL_RECYCLE_STATUS_PENDING_APPROVAL);
        return R.ok(residualRecycleService.save(residualRecycle));
    }
    /**
     * 修改残体回收
     * @param residualRecycle 残体回收
     * @return R
     */
    @Operation(summary = "修改残体回收" , description = "修改残体回收" )
    @SysLog("修改残体回收" )
    @PutMapping
    @PreAuthorize("@pms.hasPermission('device_residualRecycle_edit')" )
    public R updateById(@RequestBody ResidualRecycle residualRecycle) {
        return residualRecycleService.updateByIdNew(residualRecycle);
    }
    /**
     * 通过id删除残体回收
     * @param ids id列表
     * @return R
     */
    @Operation(summary = "通过id删除残体回收" , description = "通过id删除残体回收" )
    @SysLog("通过id删除残体回收" )
    @DeleteMapping
    @PreAuthorize("@pms.hasPermission('device_residualRecycle_del')" )
    public R removeById(@RequestBody Long[] ids) {
        return R.ok(residualRecycleService.removeBatchByIds(CollUtil.toList(ids)));
    }
    /**
     * 导出excel 表格
     * @param residualRecycle 查询条件
        * @param ids 导出指定ID
     * @return excel 文件流
     */
    @ResponseExcel
    @GetMapping("/export")
    @PreAuthorize("@pms.hasPermission('device_residualRecycle_export')" )
    public List<ResidualRecycle> export(ResidualRecycle residualRecycle,Long[] ids) {
        return residualRecycleService.list(Wrappers.lambdaQuery(residualRecycle).in(ArrayUtil.isNotEmpty(ids), ResidualRecycle::getId, ids));
    }
    /**
     * 审批通过id残体回收
     * @param id id列表
     * @return R
     */
    @Operation(summary = "审批通过id残体回收" , description = "审批通过id残体回收" )
    @SysLog("审批通过id残体回收" )
    @GetMapping("/approvedById/{id}")
    @PreAuthorize("@pms.hasPermission('device_residualRecycle_approved')" )
    public R approvedById(@PathVariable("id") Long id) {
        return residualRecycleService.approvedById(id);
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/WorkOrderController.java
@@ -52,6 +52,7 @@
        wrapper.like(StrUtil.isNotBlank(workOrder.getWoCode()),WorkOrder::getWoCode,workOrder.getWoCode());
        wrapper.like(StrUtil.isNotBlank(workOrder.getWoDesc()),WorkOrder::getWoDesc,workOrder.getWoDesc());
        wrapper.eq(Objects.nonNull(workOrder.getWoStatus()),WorkOrder::getWoStatus,workOrder.getWoStatus());
        wrapper.orderByDesc(WorkOrder::getCreateTime);
        return R.ok(workOrderService.page(page, wrapper));
    }
@@ -91,7 +92,7 @@
    @PutMapping
    @PreAuthorize("@pms.hasPermission('device_workOrder_edit')" )
    public R updateById(@RequestBody WorkOrder workOrder) {
        return R.ok(workOrderService.updateById(workOrder));
        return workOrderService.updateByIdNew(workOrder);
    }
    /**
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/ResidualRecycleMapper.java
New file
@@ -0,0 +1,11 @@
package com.by4cloud.platformx.device.mapper;
import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
import com.by4cloud.platformx.device.entity.ResidualRecycle;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ResidualRecycleMapper extends PlatformxBaseMapper<ResidualRecycle> {
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java
@@ -1,5 +1,6 @@
package com.by4cloud.platformx.device.service;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.device.entity.Contract;
import com.github.yulichang.extension.mapping.base.MPJDeepService;
@@ -19,4 +20,8 @@
    Boolean approved(Long id);
    List<Contract> getApprovedContractList();
    R approvelInvalid(Long id);
    R invalidById(Long id);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceInventoryService.java
@@ -8,4 +8,6 @@
public interface DeviceInventoryService extends IService<DeviceInventory> {
    R getReleaseDetail(Long id);
    R returnDevice(Long id);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ResidualRecycleService.java
New file
@@ -0,0 +1,12 @@
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.ResidualRecycle;
public interface ResidualRecycleService extends IService<ResidualRecycle> {
    R approvedById(Long id);
    R updateByIdNew(ResidualRecycle residualRecycle);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/WorkOrderService.java
@@ -1,8 +1,10 @@
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.WorkOrder;
public interface WorkOrderService extends IService<WorkOrder> {
    R updateByIdNew(WorkOrder workOrder);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java
@@ -3,10 +3,10 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.device.entity.Contract;
import com.by4cloud.platformx.device.entity.ContractItem;
import com.by4cloud.platformx.device.mapper.ContractItemMapper;
import com.by4cloud.platformx.device.mapper.ContractMapper;
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.mapper.*;
import com.by4cloud.platformx.device.service.ContractService;
import org.springframework.stereotype.Service;
import cn.hutool.core.collection.CollUtil;
@@ -27,11 +27,16 @@
@RequiredArgsConstructor
public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements ContractService {
  private final ContractItemMapper contractItemMapper;
  private final DeviceLeasingLedgerMapper leasingLedgerMapper;
  private final DeviceLeasingLedgerItemMapper ledgerItemMapper;
  private final DeviceInventoryMapper inventoryMapper;
  private final InventoryFlowWaterMapper flowWaterMapper;
  private final DeviceMapper deviceMapper;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean saveDeep(Contract contract) {
        contract.setStatus(0);
        contract.setStatus(CommonStatusContant.CONTRACT_STATUS_PENDING_APPROVAL);
        baseMapper.insert(contract);
        for (ContractItem contractItem : contract.getContractItemList()) {
            contractItem.setContractId(contract.getId());
@@ -87,7 +92,7 @@
    @Override
    public Boolean approved(Long id) {
        Contract contract = baseMapper.selectById(id);
        contract.setStatus(1);
        contract.setStatus(CommonStatusContant.CONTRACT_STATUS_APPROVED);
        baseMapper.updateById(contract);
        return Boolean.TRUE;
    }
@@ -95,8 +100,60 @@
    @Override
    public List<Contract> getApprovedContractList() {
        QueryWrapper<Contract> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("status",1);
        queryWrapper.eq("status",CommonStatusContant.CONTRACT_STATUS_APPROVED);
        List<Contract> list = baseMapper.selectList(queryWrapper);
        return list;
    }
    @Override
    public R approvelInvalid(Long id) {
        Contract contract = baseMapper.selectById(id);
        contract.setStatus(CommonStatusContant.CONTRACT_STATUS_INVALID_PENDING_APPROVAL);
        baseMapper.updateById(contract);
        return R.ok();
    }
    @Override
    public R invalidById(Long id) {
        Contract contract = baseMapper.selectById(id);
        contract.setStatus(CommonStatusContant.CONTRACT_STATUS_INVALID);
        baseMapper.updateById(contract);
        //根据合同查找相关租赁台账
        QueryWrapper<DeviceLeasingLedger> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("contract_id",id);
        DeviceLeasingLedger ledger = leasingLedgerMapper.selectOne(queryWrapper);
        if (ledger!=null){
            //查找相关台账明细
            QueryWrapper<DeviceLeasingLedgerItem> ledgerItemQueryWrapper = new QueryWrapper<>();
            ledgerItemQueryWrapper.eq("ledger_id",ledger.getId());
            List<DeviceLeasingLedgerItem> ledgerItemList = ledgerItemMapper.selectList(ledgerItemQueryWrapper);
            if(ledgerItemList.size()>0){
                //根据台账明细查询设备库存
                ledgerItemList.stream().forEach(deviceLeasingLedgerItem -> {
                    QueryWrapper<DeviceInventory> inventoryQueryWrapper = new QueryWrapper<>();
                    inventoryQueryWrapper.eq("ledger_item_id",deviceLeasingLedgerItem.getId());
                    List<DeviceInventory> inventoryList = inventoryMapper.selectList(inventoryQueryWrapper);
                    //将设备库存状态更为可用
                    if (inventoryList.size()>0){
                        inventoryList.stream().forEach(deviceInventory -> {
                            deviceInventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
                            inventoryMapper.updateById(deviceInventory);
                            //库存流水
                            InventoryFlowWater flowWater = new InventoryFlowWater();
                            flowWater.setDeviceId(deviceInventory.getDeviceId());
                            Device device = deviceMapper.selectById(deviceInventory.getDeviceId());
                            if (device!=null){
                                flowWater.setClassId(device.getClassId());
                            }
                            flowWater.setInventoryId(deviceInventory.getId());
                            flowWater.setSerialNo(deviceInventory.getSerialNo());
                            flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_IN);
                            flowWaterMapper.insert(flowWater);
                        });
                    }
                });
            }
        }
        return R.ok();
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceInventoryServiceImpl.java
@@ -2,13 +2,17 @@
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.Device;
import com.by4cloud.platformx.device.entity.DeviceInventory;
import com.by4cloud.platformx.device.entity.InventoryFlowWater;
import com.by4cloud.platformx.device.entity.vo.InventoryDetailVo;
import com.by4cloud.platformx.device.mapper.DeviceInventoryMapper;
import com.by4cloud.platformx.device.mapper.DeviceMapper;
import com.by4cloud.platformx.device.mapper.InventoryFlowWaterMapper;
import com.by4cloud.platformx.device.service.DeviceInventoryService;
import com.by4cloud.platformx.device.service.InventoryFlowWaterService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
@@ -18,10 +22,34 @@
 * @date 2025-03-13 10:22:39
 */
@Service
@AllArgsConstructor
public class DeviceInventoryServiceImpl extends ServiceImpl<DeviceInventoryMapper, DeviceInventory> implements DeviceInventoryService {
    private final InventoryFlowWaterMapper flowWaterMapper;
    private final DeviceMapper deviceMapper;
    @Override
    public R getReleaseDetail(Long id) {
        InventoryDetailVo detailVo = baseMapper.getReleaseDetail(id);
        return R.ok(detailVo);
    }
    @Override
    public R returnDevice(Long id) {
        DeviceInventory inventory = baseMapper.selectById(id);
        inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
        baseMapper.updateById(inventory);
        //库存流水记录
        InventoryFlowWater flowWater = new InventoryFlowWater();
        flowWater.setDeviceId(inventory.getDeviceId());
        Device device = deviceMapper.selectById(inventory.getDeviceId());
        if (device!=null){
            flowWater.setClassId(device.getClassId());
        }
        flowWater.setInventoryId(inventory.getId());
        flowWater.setSerialNo(inventory.getSerialNo());
        flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_IN);
        flowWaterMapper.insert(flowWater);
        return R.ok();
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java
@@ -3,6 +3,7 @@
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.mapper.*;
import com.by4cloud.platformx.device.service.DeviceLeasingLedgerService;
@@ -94,7 +95,7 @@
                inventoryQueryWrapper.eq("serial_no",serialNo);
                DeviceInventory inventory = inventoryMapper.selectOne(inventoryQueryWrapper);
                if (device!=null&&inventory!=null) {
                    inventory.setInventoryStatus(2);
                    inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_RENTING);
                    inventory.setLedgerItemId(item.getId());
                    //库存调整
                    inventoryMapper.updateById(inventory);
@@ -107,11 +108,11 @@
                    flowWater.setClassId(device.getClassId());
                    //根据合同类型 购买 承租 流水操作类型为入库操作
                    if (contract!=null&&(contract.getType()==1||contract.getType()==2)){
                        flowWater.setOperateType(2);
                        flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_IN);
                    }
                    //根据合同类型 租赁 流水操作类型为出库操作
                    if (contract!=null&&contract.getType()==0){
                        flowWater.setOperateType(1);
                        flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_OUT);
                    }
                    //记录库存流水
                    inventoryFlowWaterMapper.insert(flowWater);
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java
@@ -5,6 +5,7 @@
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.CommonStatusContant;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
@@ -39,7 +40,7 @@
        devicePurchasePlan.setReleaseCompId(SecurityUtils.getUser().getCompId());
        devicePurchasePlan.setReleaseId(SecurityUtils.getUser().getId());
        devicePurchasePlan.setReleaseTime(new Date());
        devicePurchasePlan.setStatus(0);
        devicePurchasePlan.setStatus(CommonStatusContant.DEVICE_PURCHASE_STATUS_PANDING_APPROVAL);
        baseMapper.insert(devicePurchasePlan);
        if (devicePurchasePlan.getPlanItemList() != null&&devicePurchasePlan.getPlanItemList().size()>0) {
            devicePurchasePlan.getPlanItemList().forEach(item->{
@@ -58,7 +59,7 @@
    @Override
    public boolean approved(Long id) {
        DevicePurchasePlan plan = baseMapper.selectById(id);
        plan.setStatus(1);
        plan.setStatus(CommonStatusContant.DEVICE_PURCHASE_STATUS_APPROVED);
        baseMapper.updateById(plan);
        return true;
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceRepairServiceImpl.java
@@ -4,6 +4,7 @@
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.device.constant.CommonStatusContant;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO;
import com.by4cloud.platformx.device.entity.DeviceInventory;
@@ -33,10 +34,10 @@
    @Override
    public R approved(Long id) {
        DeviceRepair repair = baseMapper.selectById(id);
        repair.setStatus(2);
        repair.setStatus(CommonStatusContant.DEVICE_REPAIR_STATUS_REPAIRING);
        baseMapper.updateById(repair);
        DeviceInventory inventory = inventoryMapper.selectById(repair.getInventoryId());
        inventory.setInventoryStatus(3);
        inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_REPAIRING);
        inventoryMapper.updateById(inventory);
        return R.ok();
    }
@@ -44,10 +45,10 @@
    @Override
    public R complete(Long id) {
        DeviceRepair repair = baseMapper.selectById(id);
        repair.setStatus(3);
        repair.setStatus(CommonStatusContant.DEVICE_REPAIR_STATUS_COMPLETE);
        baseMapper.updateById(repair);
        DeviceInventory inventory = inventoryMapper.selectById(repair.getInventoryId());
        inventory.setInventoryStatus(1);
        inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
        inventoryMapper.updateById(inventory);
        return R.ok();
    }
@@ -64,10 +65,10 @@
        workOrder.setRepairId(id);
        workOrder.setWoCode(maxSizeService.nextNo(MaxSizeContant.DEVICE_PURCHASE_CODE));
        workOrder.setWoDesc(repair.getRepairDesc());
        workOrder.setWoType(1);
        workOrder.setWoStatus(1);
        workOrder.setWoType(CommonStatusContant.WORK_ORDER_TYPE_REPAIR);
        workOrder.setWoStatus(CommonStatusContant.WORK_ORDER_STATUS_ALLOCATED);
        workOrderMapper.insert(workOrder);
        repair.setWoFlag(1);
        repair.setWoFlag(CommonStatusContant.DEVICE_REPAIR_FLAG_Y);
        baseMapper.updateById(repair);
        return R.ok();
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceScrapServiceImpl.java
@@ -4,6 +4,7 @@
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.device.constant.CommonStatusContant;
import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO;
import com.by4cloud.platformx.device.entity.DeviceInventory;
import com.by4cloud.platformx.device.entity.DeviceRepair;
@@ -28,10 +29,10 @@
    @Override
    public R approved(Long id) {
        DeviceScrap scrap = baseMapper.selectById(id);
        scrap.setStatus(2);
        scrap.setStatus(CommonStatusContant.DEVICE_SCRAP_STATUS_COMPLETE);
        baseMapper.updateById(scrap);
        DeviceInventory inventory = inventoryMapper.selectById(scrap.getInventoryId());
        inventory.setInventoryStatus(4);
        inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_SCRAPING);
        inventoryMapper.updateById(inventory);
        return R.ok();
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionPlanServiceImpl.java
@@ -6,6 +6,7 @@
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.device.constant.CommonStatusContant;
import com.by4cloud.platformx.device.dto.InspectionPlanQueryDTO;
import com.by4cloud.platformx.device.entity.*;
import com.by4cloud.platformx.device.mapper.*;
@@ -63,10 +64,10 @@
        }
        //根据是否生成任务标识生成任务
        if (inspectionPlan.getTaskFlag()==1){
        if (inspectionPlan.getTaskFlag()==CommonStatusContant.INSPECTION_PLAN_FLAG_GEN_Y){
            InspectionTask task = BeanUtil.copyProperties(inspectionPlan, InspectionTask.class);
            task.setId(null);
            task.setTaskStatus(0);
            task.setTaskStatus(CommonStatusContant.INSPECTION_TASK_NO_STARTED);
            task.setTaskName(inspectionPlan.getPlanName()+"的任务");
            task.setPlanId(inspectionPlan.getId());
            taskMapper.insert(task);
@@ -171,10 +172,10 @@
        }
        //根据是否生成任务标识生成任务
        if (inspectionPlan.getTaskFlag()==1){
        if (inspectionPlan.getTaskFlag()==CommonStatusContant.INSPECTION_PLAN_FLAG_GEN_Y){
            InspectionTask task = BeanUtil.copyProperties(inspectionPlan, InspectionTask.class);
            task.setId(null);
            task.setTaskStatus(0);
            task.setTaskStatus(CommonStatusContant.INSPECTION_TASK_NO_STARTED);
            task.setTaskName(inspectionPlan.getPlanName()+"的任务");
            task.setPlanId(inspectionPlan.getId());
            taskMapper.insert(task);
@@ -212,7 +213,7 @@
        InspectionPlan plan = getByIdNew(id);
        InspectionTask task = BeanUtil.copyProperties(plan, InspectionTask.class);
        task.setId(null);
        task.setTaskStatus(0);
        task.setTaskStatus(CommonStatusContant.INSPECTION_TASK_NO_STARTED);
        task.setTaskName(plan.getPlanName()+"的任务");
        task.setPlanId(plan.getId());
        taskMapper.insert(task);
@@ -245,7 +246,7 @@
        }
        //跟新计划标识
        plan.setTaskFlag(1);
        plan.setTaskFlag(CommonStatusContant.INSPECTION_PLAN_FLAG_GEN_Y);
        baseMapper.updateById(plan);
        return R.ok();
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionTaskServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.admin.api.entity.SysUser;
import com.by4cloud.platformx.device.constant.CommonStatusContant;
import com.by4cloud.platformx.device.dto.InspectionTaskQueryDTO;
import com.by4cloud.platformx.device.entity.InspectionTask;
import com.by4cloud.platformx.device.entity.InspectionTaskItem;
@@ -48,7 +49,7 @@
        inspectionTask.getItemList().stream().forEach(item->{
            itemMapper.updateById(item);
        });
        inspectionTask.setTaskStatus(2);
        inspectionTask.setTaskStatus(CommonStatusContant.INSPECTION_TASK_COMPLETE);
        baseMapper.updateById(inspectionTask);
        return true;
    }
@@ -56,7 +57,7 @@
    @Override
    public boolean taskStartById(Long id) {
        InspectionTask task = baseMapper.selectById(id);
        task.setTaskStatus(1);
        task.setTaskStatus(CommonStatusContant.INSPECTION_TASK_DURING_INSPECTION);
        baseMapper.updateById(task);
        return true;
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java
@@ -5,6 +5,7 @@
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.device.constant.CommonStatusContant;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
import com.by4cloud.platformx.device.dto.ReceivingNoteQueryDTO;
import com.by4cloud.platformx.device.entity.*;
@@ -118,12 +119,12 @@
                            inventory.setName(device.getName());
                            inventory.setSerialNo(serialNo);
                            if (contract!=null&&(contract.getType()==1||contract.getType()==2)){
                                inventory.setSource(1);
                                inventory.setInventoryStatus(1);
                                inventory.setSource(CommonStatusContant.DEVICE_INVENTORY_RESOURCE_WAREHOUSE);
                                inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
                            }
                            if (contract!=null&&contract.getType()==0){
                                inventory.setSource(1);
                                inventory.setInventoryStatus(2);
                                inventory.setSource(CommonStatusContant.DEVICE_INVENTORY_RESOURCE_WAREHOUSE);
                                inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_RENTING);
                            }
                            inventoryMapper.insert(inventory);
                            //设备库存流水同步新增
@@ -136,7 +137,7 @@
                                flowWater.setOperateType(2);
                            }
                            if (contract!=null&&contract.getType()==0){
                                flowWater.setOperateType(1);
                                flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_OUT);
                            }
                            inventoryFlowWaterMapper.insert(flowWater);
                        }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ResidualRecycleServiceImpl.java
New file
@@ -0,0 +1,56 @@
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.DeviceInventory;
import com.by4cloud.platformx.device.entity.ResidualRecycle;
import com.by4cloud.platformx.device.mapper.DeviceInventoryMapper;
import com.by4cloud.platformx.device.mapper.ResidualRecycleMapper;
import com.by4cloud.platformx.device.service.ResidualRecycleService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
 * 残体回收
 *
 * @author syt
 * @date 2025-04-23 10:28:34
 */
@Service
@AllArgsConstructor
public class ResidualRecycleServiceImpl extends ServiceImpl<ResidualRecycleMapper, ResidualRecycle> implements ResidualRecycleService {
    private final DeviceInventoryMapper inventoryMapper;
    @Override
    public R approvedById(Long id) {
        ResidualRecycle residualRecycle = baseMapper.selectById(id);
        residualRecycle.setStatus(CommonStatusContant.RESIDUAL_RECYCLE_STATUS_HANDLING);
        baseMapper.updateById(residualRecycle);
        return R.ok();
    }
    @Override
    public R updateByIdNew(ResidualRecycle residualRecycle) {
        if (residualRecycle.getStatus()==CommonStatusContant.RESIDUAL_RECYCLE_STATUS_HANDLING){
            residualRecycle.setStatus(CommonStatusContant.RESIDUAL_RECYCLE_STATUS_COMPLETE);
            QueryWrapper<DeviceInventory> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("device_id",residualRecycle.getDeviceId());
            queryWrapper.eq("serial_no",residualRecycle.getSerialNo());
            DeviceInventory inventory = inventoryMapper.selectOne(queryWrapper);
            if (inventory!=null){
                if (residualRecycle.getHandleMethod()==CommonStatusContant.RESIDUAL_RECYCLE_METHOD_DISASSEMBE_RECYCLE||
                        residualRecycle.getHandleMethod()==CommonStatusContant.RESIDUAL_RECYCLE_METHOD_TRANSFER_PROFESSIONAL_INSTITUTION){
                    inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_RECYCLE);
                    inventoryMapper.updateById(inventory);
                }else if (residualRecycle.getHandleMethod()==CommonStatusContant.RESIDUAL_RECYCLE_METHOD_CYCLE_RENTING){
                    inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
                    inventoryMapper.updateById(inventory);
                }
            }
        }
        baseMapper.updateById(residualRecycle);
        return R.ok();
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/WorkOrderServiceImpl.java
@@ -1,9 +1,16 @@
package com.by4cloud.platformx.device.service.impl;
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.DeviceInventory;
import com.by4cloud.platformx.device.entity.DeviceRepair;
import com.by4cloud.platformx.device.entity.WorkOrder;
import com.by4cloud.platformx.device.mapper.DeviceInventoryMapper;
import com.by4cloud.platformx.device.mapper.DeviceRepairMapper;
import com.by4cloud.platformx.device.mapper.WorkOrderMapper;
import com.by4cloud.platformx.device.service.WorkOrderService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
 * 工单
@@ -12,5 +19,35 @@
 * @date 2025-04-22 16:01:37
 */
@Service
@AllArgsConstructor
public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService {
    private final DeviceRepairMapper repairMapper;
    private final DeviceInventoryMapper inventoryMapper;
    @Override
    public R updateByIdNew(WorkOrder workOrder) {
        //工单处理
        if (workOrder.getWoStatus()==2){
            workOrder.setWoStatus(CommonStatusContant.WORK_ORDER_STATUS_CLOSING);
        }
        //人员分配
        if (workOrder.getWoStatus()==1&&workOrder.getHandleUserId()!=null){
            workOrder.setWoStatus(CommonStatusContant.WORK_ORDER_STATUS_HANDLING);
        }
        baseMapper.updateById(workOrder);
        //更新维修状态
        if (workOrder.getRepairId()!=null){
            DeviceRepair repair = repairMapper.selectById(workOrder.getRepairId());
            repair.setStatus(CommonStatusContant.DEVICE_REPAIR_STATUS_COMPLETE);
            repairMapper.updateById(repair);
            //更新库存状态
            DeviceInventory inventory = inventoryMapper.selectById(repair.getInventoryId());
            inventory.setInventoryStatus(CommonStatusContant.DEVICE_INVENTORY_USABLE);
            inventoryMapper.updateById(inventory);
        }
        return R.ok();
    }
}
platformx-device-biz/src/main/resources/mapper/ResidualRecycleMapper.xml
New file
@@ -0,0 +1,30 @@
<?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.ResidualRecycleMapper">
  <resultMap id="residualRecycleMap" type="com.by4cloud.platformx.device.entity.ResidualRecycle">
        <id property="id" column="id"/>
        <result property="compId" column="comp_id"/>
        <result property="accumulatedDepreciation" column="accumulated_depreciation"/>
        <result property="actualResidual" column="actual_residual"/>
        <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="handleMethod" column="handle_method"/>
        <result property="handleOrgan" column="handle_organ"/>
        <result property="initialValue" column="initial_value"/>
        <result property="meteringUnit" column="metering_unit"/>
        <result property="registrationDate" column="registration_date"/>
        <result property="residualCalculation" column="residual_calculation"/>
        <result property="serialNo" column="serial_no"/>
        <result property="status" column="status"/>
        <result property="verificationDate" column="verification_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>
</mapper>