Procházet zdrojové kódy

新增设备处置、设备报废、设备变卖模块

lingpeng.li před 1 měsícem
rodič
revize
affab0d1c3
86 změnil soubory, kde provedl 4662 přidání a 769 odebrání
  1. 191 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/controller/AttachmentsController.java
  2. 84 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/entity/Attachments.java
  3. 33 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/mapper/AttachmentsMapper.java
  4. 20 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/mapper/xml/AttachmentsMapper.xml
  5. 37 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/service/IAttachmentsService.java
  6. 50 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/service/impl/AttachmentsServiceImpl.java
  7. 350 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/controller/DeviceDisposalController.java
  8. 58 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/dto/DeviceDisposalQueryDTO.java
  9. 141 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/entity/DeviceDisposal.java
  10. 16 15
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/entity/DisposalAttachments.java
  11. 147 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/entity/DisposalDevice.java
  12. 23 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/DeviceDisposalMapper.java
  13. 7 7
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/DisposalAttachmentsMapper.java
  14. 7 7
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/DisposalDeviceMapper.java
  15. 102 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/xml/DeviceDisposalMapper.xml
  16. 16 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/xml/DisposalAttachmentsMapper.xml
  17. 16 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/xml/DisposalDeviceMapper.xml
  18. 60 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/IDeviceDisposalService.java
  19. 23 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/IDisposalAttachmentsService.java
  20. 23 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/IDisposalDeviceService.java
  21. 114 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/impl/DeviceDisposalServiceImpl.java
  22. 27 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/impl/DisposalAttachmentsServiceImpl.java
  23. 27 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/impl/DisposalDeviceServiceImpl.java
  24. 109 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/vo/DeviceDisposalPage.java
  25. 103 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/vo/DeviceDisposalRecordVO.java
  26. 72 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/vo/DeviceDisposalVO.java
  27. 331 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/controller/DeviceSaleController.java
  28. 37 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/dto/DeviceSaleItemQuery.java
  29. 143 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/entity/DeviceSale.java
  30. 135 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/entity/SaleDevice.java
  31. 23 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/mapper/DeviceSaleMapper.java
  32. 31 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/mapper/SaleDeviceMapper.java
  33. 83 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/mapper/xml/DeviceSaleMapper.xml
  34. 16 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/mapper/xml/SaleDeviceMapper.xml
  35. 57 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/service/IDeviceSaleService.java
  36. 23 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/service/ISaleDeviceService.java
  37. 92 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/service/impl/DeviceSaleServiceImpl.java
  38. 27 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/service/impl/SaleDeviceServiceImpl.java
  39. 31 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/vo/DeviceSaleItemVO.java
  40. 144 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/vo/DeviceSalePage.java
  41. 328 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/controller/DeviceScrapController.java
  42. 42 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/dto/DeviceScrapItemQuery.java
  43. 135 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/entity/DeviceScrap.java
  44. 163 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/entity/ScrapDevice.java
  45. 23 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/mapper/DeviceScrapMapper.java
  46. 40 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/mapper/SbsmzqScrapDeviceMapper.java
  47. 89 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/mapper/xml/DeviceScrapMapper.xml
  48. 16 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/mapper/xml/SbsmzqScrapDeviceMapper.xml
  49. 57 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/service/IDeviceScrapService.java
  50. 23 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/service/ISbsmzqScrapDeviceService.java
  51. 92 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/service/impl/DeviceScrapServiceImpl.java
  52. 27 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/service/impl/SbsmzqScrapDeviceServiceImpl.java
  53. 40 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/vo/DeviceScrapItemVO.java
  54. 136 0
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/vo/DeviceScrapPage.java
  55. 1 1
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/controller/DeviceTransferController.java
  56. 44 4
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/dto/DeviceTransferItemQuery.java
  57. 52 20
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/mapper/xml/DeviceTransferMapper.xml
  58. 22 22
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/vo/DeviceTransferItemVO.java
  59. 132 93
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/vo/DeviceTransferPage.java
  60. 6 6
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/controller/EquipmentAcceptController.java
  61. 0 116
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/entity/EquipmentRelatedFile.java
  62. 0 16
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/mapper/xml/EquipmentRelatedFileMapper.xml
  63. 3 3
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/service/IEquipmentAcceptService.java
  64. 0 22
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/service/IEquipmentRelatedFileService.java
  65. 11 15
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/service/impl/EquipmentAcceptServiceImpl.java
  66. 0 27
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/service/impl/EquipmentRelatedFileServiceImpl.java
  67. 2 2
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/vo/EquipmentAcceptPage.java
  68. 0 1
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentRelatedFile/fileApplyCategory/service/IFileApplyCategoryService.java
  69. 0 2
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentRelatedFile/fileApplyCategory/service/impl/FileApplyCategoryServiceImpl.java
  70. 6 6
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/controller/PurchaseApplicationController.java
  71. 0 80
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/entity/PurchaseApplicationAttachment.java
  72. 0 31
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/mapper/PurchaseApplicationAttachmentMapper.java
  73. 0 16
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/mapper/xml/PurchaseApplicationAttachmentMapper.xml
  74. 0 22
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/service/IPurchaseApplicationAttachmentService.java
  75. 3 3
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/service/IPurchaseApplicationService.java
  76. 0 27
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/service/impl/PurchaseApplicationAttachmentServiceImpl.java
  77. 11 14
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/service/impl/PurchaseApplicationServiceImpl.java
  78. 6 2
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/vo/PurchaseApplicationPage.java
  79. 6 6
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseDetails/controller/PurchaseDetailsController.java
  80. 6 6
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/controller/PurchasePlanController.java
  81. 0 16
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/mapper/xml/PurchaseAttachmentsMapper.xml
  82. 0 22
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/service/IPurchaseAttachmentsService.java
  83. 37 36
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/service/IPurchasePlanService.java
  84. 0 27
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/service/impl/PurchaseAttachmentsServiceImpl.java
  85. 72 74
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/service/impl/PurchasePlanServiceImpl.java
  86. 2 2
      zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/vo/PurchasePlanPage.java

+ 191 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/controller/AttachmentsController.java

@@ -0,0 +1,191 @@
+package org.jeecg.modules.attachments.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.service.IAttachmentsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Description: 相关附件
+ * @Author: jeecg-boot
+ * @Date:   2025-04-23
+ * @Version: V1.0
+ */
+@Api(tags="相关附件")
+@RestController
+@RequestMapping("/attachments/attachments")
+@Slf4j
+public class AttachmentsController extends JeecgController<Attachments, IAttachmentsService> {
+	@Autowired
+	private IAttachmentsService attachmentsService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param attachments
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "相关附件-分页列表查询")
+	@ApiOperation(value="相关附件-分页列表查询", notes="相关附件-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<Attachments>> queryPageList(Attachments attachments,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+        QueryWrapper<Attachments> queryWrapper = QueryGenerator.initQueryWrapper(attachments, req.getParameterMap());
+		Page<Attachments> page = new Page<Attachments>(pageNo, pageSize);
+		IPage<Attachments> pageList = attachmentsService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param attachments
+	 * @return
+	 */
+	@AutoLog(value = "相关附件-添加")
+	@ApiOperation(value="相关附件-添加", notes="相关附件-添加")
+	@RequiresPermissions("attachments:sbsmzq_attachments:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody Attachments attachments) {
+		attachmentsService.save(attachments);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param attachments
+	 * @return
+	 */
+	@AutoLog(value = "相关附件-编辑")
+	@ApiOperation(value="相关附件-编辑", notes="相关附件-编辑")
+	@RequiresPermissions("attachments:sbsmzq_attachments:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody Attachments attachments) {
+		attachmentsService.updateById(attachments);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "相关附件-通过id删除")
+	@ApiOperation(value="相关附件-通过id删除", notes="相关附件-通过id删除")
+	@RequiresPermissions("attachments:sbsmzq_attachments:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		attachmentsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "相关附件-批量删除")
+	@ApiOperation(value="相关附件-批量删除", notes="相关附件-批量删除")
+	@RequiresPermissions("attachments:sbsmzq_attachments:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.attachmentsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "相关附件-通过id查询")
+	@ApiOperation(value="相关附件-通过id查询", notes="相关附件-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<Attachments> queryById(@RequestParam(name="id",required=true) String id) {
+		Attachments attachments = attachmentsService.getById(id);
+		if(attachments==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(attachments);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param attachments
+    */
+    @RequiresPermissions("attachments:sbsmzq_attachments:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, Attachments attachments) {
+        return super.exportXls(request, attachments, Attachments.class, "相关附件");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("attachments:sbsmzq_attachments:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, Attachments.class);
+    }
+
+
+	 /**
+	  *   批量添加
+	  *
+	  * @param attachmentsList
+	  * @return
+	  */
+	 @AutoLog(value = "相关附件-批量添加")
+	 @ApiOperation(value="相关附件-批量添加", notes="相关附件-批量添加")
+	 @PostMapping(value = "/addAll")
+	 public Result<String> addAll(@RequestBody List<Attachments> attachmentsList) {
+		 attachmentsService.saveBatch(attachmentsList); // 批量保存
+		 return Result.OK("批量添加成功!");
+	 }
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	@ApiOperation(value = "根据主表id删除附件表对应记录", notes = "根据主表id删除附件表对应记录")
+	@DeleteMapping(value = "/deleteByMainId")
+	public Result<String> deleteByMainId(@RequestParam(name = "id", required = true) String id,
+										 @RequestParam(name = "table", required = false) String table) {
+		attachmentsService.delMain(id,table);
+		return Result.OK("删除成功!");
+	}
+}

+ 84 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/entity/Attachments.java

@@ -0,0 +1,84 @@
+package org.jeecg.modules.attachments.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 相关附件
+ * @Author: jeecg-boot
+ * @Date:   2025-04-23
+ * @Version: V1.0
+ */
+@Data
+@TableName("sbsmzq_attachments")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="sbsmzq_attachments对象", description="相关附件")
+public class Attachments implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**文件名称*/
+	@Excel(name = "文件名称", width = 15)
+    @ApiModelProperty(value = "文件名称")
+    private java.lang.String fileName;
+	/**文件地址*/
+	@Excel(name = "文件地址", width = 15)
+    @ApiModelProperty(value = "文件地址")
+    private java.lang.String fileAddress;
+	/**附件关联表的id*/
+	@Excel(name = "附件关联表的id", width = 15)
+    @ApiModelProperty(value = "附件关联表的id")
+    private java.lang.String extId;
+	/**附件关联表的名称*/
+	@Excel(name = "附件关联表的名称", width = 15)
+    @ApiModelProperty(value = "附件关联表的名称")
+    private java.lang.String extTable;
+	/**文件类型*/
+	@Excel(name = "文件类型", width = 15)
+    @ApiModelProperty(value = "文件类型")
+    private java.lang.String type;
+	/**文件大小*/
+	@Excel(name = "文件大小", width = 15)
+    @ApiModelProperty(value = "文件大小")
+    private java.lang.Integer size;
+}

+ 33 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/mapper/AttachmentsMapper.java

@@ -0,0 +1,33 @@
+package org.jeecg.modules.attachments.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.attachments.entity.Attachments;
+
+import java.util.List;
+
+/**
+ * @Description: 相关附件
+ * @Author: jeecg-boot
+ * @Date: 2025-04-23
+ * @Version: V1.0
+ */
+public interface AttachmentsMapper extends BaseMapper<Attachments> {
+
+    /**
+     * 通过主表id和可选的扩展表名删除子表数据
+     *
+     * @param extId 主表id
+     * @param extTable 可选的扩展表名字段(非动态表名)
+     * @return boolean
+     */
+    boolean deleteByMainId(@Param("extId") String extId, @Param("extTable") String extTable);
+    /**
+     * 通过主表id查询子表数据
+     *
+     * @param extId 主表id
+     * @return List<Attachments>
+     */
+    public List<Attachments> selectByMainId(String extId);
+
+}

+ 20 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/mapper/xml/AttachmentsMapper.xml

@@ -0,0 +1,20 @@
+<?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="org.jeecg.modules.attachments.mapper.AttachmentsMapper">
+
+    <delete id="deleteByMainId" parameterType="map">
+        DELETE FROM sbsmzq_attachments
+        WHERE ext_id = #{extId}
+        <if test="extTable != null and extTable != ''">
+            AND ext_table = #{extTable}
+        </if>
+    </delete>
+
+
+    <select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlanInfo">
+        SELECT *
+        FROM  sbsmzq_attachments
+        WHERE
+            ext_id = #{extId} 	</select>
+
+</mapper>

+ 37 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/service/IAttachmentsService.java

@@ -0,0 +1,37 @@
+package org.jeecg.modules.attachments.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.attachments.entity.Attachments;
+
+import java.util.List;
+
+/**
+ * @Description: 相关附件
+ * @Author: jeecg-boot
+ * @Date: 2025-04-23
+ * @Version: V1.0
+ */
+public interface IAttachmentsService extends IService<Attachments> {
+
+    /**
+     * 通过主表id查询子表数据
+     *
+     * @param mainId 主表id
+     * @return List<Attachments>
+     */
+    public List<Attachments> selectByMainId(String mainId);
+
+    /**
+     * 删除一对多
+     *
+     * @param id
+     */
+    public void delMain(String id, String table);
+
+    /**
+     * 添加一对多
+     *
+     * @param attachmentsList
+     */
+    public void saveMain(List<Attachments> attachmentsList);
+}

+ 50 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/attachments/service/impl/AttachmentsServiceImpl.java

@@ -0,0 +1,50 @@
+package org.jeecg.modules.attachments.service.impl;
+
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.mapper.AttachmentsMapper;
+import org.jeecg.modules.attachments.service.IAttachmentsService;
+import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlan;
+import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlanInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @Description: 相关附件
+ * @Author: jeecg-boot
+ * @Date:   2025-04-23
+ * @Version: V1.0
+ */
+@Service
+public class AttachmentsServiceImpl extends ServiceImpl<AttachmentsMapper, Attachments> implements IAttachmentsService {
+
+    @Autowired
+    private AttachmentsMapper attachmentsMapper;
+    @Override
+    public List<Attachments> selectByMainId(String mainId) {
+        return attachmentsMapper.selectByMainId(mainId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delMain(String id,String table) {
+        attachmentsMapper.deleteByMainId(id,table);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveMain(List<Attachments> attachmentsList) {
+        if (attachmentsList != null && attachmentsList.size() > 0) {
+            for (Attachments entity : attachmentsList) {
+                //外键设置
+                entity.setExtId(entity.getExtId());
+                attachmentsMapper.insert(entity);
+            }
+        }
+    }
+}

+ 350 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/controller/DeviceDisposalController.java

@@ -0,0 +1,350 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.CommonAPI;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.dto.DeviceDisposalQueryDTO;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DeviceDisposal;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalAttachments;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalDevice;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.service.IDeviceDisposalService;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.service.IDisposalAttachmentsService;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.service.IDisposalDeviceService;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.vo.DeviceDisposalPage;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.vo.DeviceDisposalVO;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @Description: 设备处置
+ * @Author: jeecg-boot
+ * @Date: 2025-04-22
+ * @Version: V1.0
+ */
+@Api(tags = "设备处置")
+@RestController
+@RequestMapping("/equipmentDisposal/deviceDisposal")
+@Slf4j
+public class DeviceDisposalController {
+
+    @Lazy
+    @Resource
+    private CommonAPI commonApi;
+
+    @Lazy
+    @Resource
+    private RedisUtil redisUtil;
+
+    @Autowired
+    private IDeviceDisposalService deviceDisposalService;
+    @Autowired
+    private IDisposalAttachmentsService disposalAttachmentsService;
+    @Autowired
+    private IDisposalDeviceService disposalDeviceService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param deviceDisposal
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "设备处置-分页列表查询")
+    @ApiOperation(value = "设备处置-分页列表查询", notes = "设备处置-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<DeviceDisposal>> queryPageList(DeviceDisposal deviceDisposal,
+                                                       @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                       @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                       HttpServletRequest req) {
+        QueryWrapper<DeviceDisposal> queryWrapper = QueryGenerator.initQueryWrapper(deviceDisposal, req.getParameterMap());
+        Page<DeviceDisposal> page = new Page<DeviceDisposal>(pageNo, pageSize);
+        IPage<DeviceDisposal> pageList = deviceDisposalService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 添加
+     *
+     * @param deviceDisposalPage
+     * @return
+     */
+    @AutoLog(value = "设备处置-添加")
+    @ApiOperation(value = "设备处置-添加", notes = "设备处置-添加")
+    @RequiresPermissions("equipmentDisposal:device_disposal:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody DeviceDisposalPage deviceDisposalPage) {
+        DeviceDisposal deviceDisposal = new DeviceDisposal();
+        BeanUtils.copyProperties(deviceDisposalPage, deviceDisposal);
+        deviceDisposalService.saveMain(deviceDisposal, deviceDisposalPage.getDisposalAttachmentsList(), deviceDisposalPage.getDisposalDeviceList());
+        return Result.OK("添加成功!");
+    }
+
+    /**
+     * 编辑
+     *
+     * @param deviceDisposalPage
+     * @return
+     */
+    @AutoLog(value = "设备处置-编辑")
+    @ApiOperation(value = "设备处置-编辑", notes = "设备处置-编辑")
+    @RequiresPermissions("equipmentDisposal:device_disposal:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody DeviceDisposalPage deviceDisposalPage) {
+        DeviceDisposal deviceDisposal = new DeviceDisposal();
+        BeanUtils.copyProperties(deviceDisposalPage, deviceDisposal);
+        DeviceDisposal deviceDisposalEntity = deviceDisposalService.getById(deviceDisposal.getId());
+        if (deviceDisposalEntity == null) {
+            return Result.error("未找到对应数据");
+        }
+        deviceDisposalService.updateMain(deviceDisposal, deviceDisposalPage.getDisposalAttachmentsList(), deviceDisposalPage.getDisposalDeviceList());
+        return Result.OK("编辑成功!");
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "设备处置-通过id删除")
+    @ApiOperation(value = "设备处置-通过id删除", notes = "设备处置-通过id删除")
+    @RequiresPermissions("equipmentDisposal:device_disposal:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        deviceDisposalService.delMain(id);
+        return Result.OK("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "设备处置-批量删除")
+    @ApiOperation(value = "设备处置-批量删除", notes = "设备处置-批量删除")
+    @RequiresPermissions("equipmentDisposal:device_disposal:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.deviceDisposalService.delBatchMain(Arrays.asList(ids.split(",")));
+        return Result.OK("批量删除成功!");
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "设备处置-通过id查询")
+    @ApiOperation(value = "设备处置-通过id查询", notes = "设备处置-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<DeviceDisposal> queryById(@RequestParam(name = "id", required = true) String id) {
+        DeviceDisposal deviceDisposal = deviceDisposalService.getById(id);
+        if (deviceDisposal == null) {
+            return Result.error("未找到对应数据");
+        }
+        return Result.OK(deviceDisposal);
+
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "设备处置--相关附件通过主表ID查询")
+    @ApiOperation(value = "设备处置--相关附件主表ID查询", notes = "设备处置--相关附件-通主表ID查询")
+    @GetMapping(value = "/queryDisposalAttachmentsByMainId")
+    public Result<List<DisposalAttachments>> queryDisposalAttachmentsListByMainId(@RequestParam(name = "id", required = true) String id) {
+        List<DisposalAttachments> disposalAttachmentsList = disposalAttachmentsService.selectByMainId(id);
+        return Result.OK(disposalAttachmentsList);
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "设备处置--处置设备通过主表ID查询")
+    @ApiOperation(value = "设备处置--处置设备主表ID查询", notes = "设备处置--处置设备-通主表ID查询")
+    @GetMapping(value = "/queryDisposalDeviceByMainId")
+    public Result<List<DisposalDevice>> queryDisposalDeviceListByMainId(@RequestParam(name = "id", required = true) String id) {
+        List<DisposalDevice> disposalDeviceList = disposalDeviceService.selectByMainId(id);
+        return Result.OK(disposalDeviceList);
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param deviceDisposal
+     */
+    @RequiresPermissions("equipmentDisposal:device_disposal:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, DeviceDisposal deviceDisposal) {
+        // Step.1 组装查询条件查询数据
+        QueryWrapper<DeviceDisposal> queryWrapper = QueryGenerator.initQueryWrapper(deviceDisposal, request.getParameterMap());
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+        //配置选中数据查询条件
+        String selections = request.getParameter("selections");
+        if (oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            queryWrapper.in("id", selectionList);
+        }
+        //Step.2 获取导出数据
+        List<DeviceDisposal> deviceDisposalList = deviceDisposalService.list(queryWrapper);
+
+        // Step.3 组装pageList
+        List<DeviceDisposalPage> pageList = new ArrayList<DeviceDisposalPage>();
+        for (DeviceDisposal main : deviceDisposalList) {
+            DeviceDisposalPage vo = new DeviceDisposalPage();
+            BeanUtils.copyProperties(main, vo);
+            List<DisposalAttachments> disposalAttachmentsList = disposalAttachmentsService.selectByMainId(main.getId());
+            vo.setDisposalAttachmentsList(disposalAttachmentsList);
+            List<DisposalDevice> disposalDeviceList = disposalDeviceService.selectByMainId(main.getId());
+            vo.setDisposalDeviceList(disposalDeviceList);
+            pageList.add(vo);
+        }
+
+        // Step.4 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        mv.addObject(NormalExcelConstants.FILE_NAME, "设备处置列表");
+        mv.addObject(NormalExcelConstants.CLASS, DeviceDisposalPage.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("设备处置数据", "导出人:" + sysUser.getRealname(), "设备处置"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequiresPermissions("equipmentDisposal:device_disposal:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            // 获取上传文件对象
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<DeviceDisposalPage> list = ExcelImportUtil.importExcel(file.getInputStream(), DeviceDisposalPage.class, params);
+                for (DeviceDisposalPage page : list) {
+                    DeviceDisposal po = new DeviceDisposal();
+                    BeanUtils.copyProperties(page, po);
+                    deviceDisposalService.saveMain(po, page.getDisposalAttachmentsList(), page.getDisposalDeviceList());
+                }
+                return Result.OK("文件导入成功!数据行数:" + list.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.OK("文件导入失败!");
+    }
+
+    /**
+     * 分页列表查询(与我相关)
+     *
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "设备处置-分页列表查询(与我相关)", notes = "设备处置-分页列表查询(与我相关)")
+    @GetMapping(value = "/listByUser")
+    public Result<IPage<DeviceDisposal>> queryPageListByUser(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                             HttpServletRequest req) {
+
+        LoginUser loginUser = TokenUtils.getLoginUser(req, commonApi, redisUtil);
+        // 构建查询条件
+        LambdaQueryWrapper<DeviceDisposal> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(DeviceDisposal::getApplicant, loginUser.getId());
+        QueryGenerator.initQueryWrapper(queryWrapper, req.getParameterMap());
+        Page<DeviceDisposal> page = new Page<DeviceDisposal>(pageNo, pageSize);
+        IPage<DeviceDisposal> pageList = deviceDisposalService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * @param queryDTO
+     * @param pageNo
+     * @param pageSize
+     * @return
+     */
+    @PostMapping("/queryDeviceDisposalPage")
+    @ApiOperation(value = "设备处置记录-处置列表信息与处置设备与设备基础信息组合分页查询", notes = "设备处置记录-处置列表信息与处置设备与设备基础信息组合分页查询")
+    public Result<IPage<DeviceDisposalVO>> queryDeviceDisposalPage(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, DeviceDisposalQueryDTO queryDTO) {
+
+        // 禁用自动 searchCount
+        Page<DeviceDisposalVO> page = new Page<>(pageNo, pageSize, false);
+
+        // 查询当前页数据
+        IPage<DeviceDisposalVO> result = deviceDisposalService.queryDeviceDisposalPage(page, queryDTO);
+
+        // 手动查询总数
+        long total = deviceDisposalService.queryDeviceDisposalCount(queryDTO);
+
+        // 设置数据与总数
+        page.setRecords(result.getRecords());
+        page.setTotal(total);
+
+        return Result.OK(result);
+    }
+
+}

+ 58 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/dto/DeviceDisposalQueryDTO.java

@@ -0,0 +1,58 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.dto;
+
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class DeviceDisposalQueryDTO {
+
+    /**
+     * 处置单号
+     */
+    private String disposalNumber;
+    /**
+     * 申请人
+     */
+    private String applicant;
+    /**
+     * 填单人
+     */
+    private String formFiller;
+    /**
+     * 填单人
+     */
+    private String deviceCode;
+    /**
+     * 设备编号
+     */
+    private String deviceName;
+    /**
+     * 所属部门
+     */
+    private String sysOrgCode;
+    /**
+     * 功能位置
+     */
+    private String currentLocation;
+    /**
+     * 申请状态
+     */
+    private String approvalStatus;
+    /**
+     * 处置方式
+     */
+    private String disposalMethod;
+    /**
+     * 申请开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date applicationTimeStart;
+    /**
+     * 申请结束时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date applicationTimeEnd;
+
+}

+ 141 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/entity/DeviceDisposal.java

@@ -0,0 +1,141 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 设备处置
+ * @Author: jeecg-boot
+ * @Date: 2025-04-22
+ * @Version: V1.0
+ */
+@ApiModel(value = "device_disposal对象", description = "设备处置")
+@Data
+@TableName("device_disposal")
+public class DeviceDisposal implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "日期")
+    private Date createDate;
+    /**
+     * 处置单号
+     */
+    @Excel(name = "处置单号", width = 15)
+    @ApiModelProperty(value = "处置单号")
+    private String disposalNumber;
+    /**
+     * 涉及设备编号
+     */
+    @Excel(name = "涉及设备编号", width = 15)
+    @ApiModelProperty(value = "涉及设备编号")
+    private String deviceNumber;
+    /**
+     * 涉及设备名称
+     */
+    @Excel(name = "涉及设备名称", width = 15)
+    @ApiModelProperty(value = "涉及设备名称")
+    private String deviceName;
+    /**
+     * 处置方式,如出租、闲置、禁用等
+     */
+    @Excel(name = "处置方式,如出租、闲置、禁用等", width = 15)
+    @ApiModelProperty(value = "处置方式,如出租、闲置、禁用等")
+    private String disposalMethod;
+    /**
+     * 说明
+     */
+    @Excel(name = "说明", width = 15)
+    @ApiModelProperty(value = "说明")
+    private String description;
+    /**
+     * 申请时间
+     */
+    @Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "申请时间")
+    private Date applicationTime;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicant;
+    /**
+     * 填单人
+     */
+    @Excel(name = "填单人", width = 15)
+    @ApiModelProperty(value = "填单人")
+    private String formFiller;
+    /**
+     * 当前节点
+     */
+    @Excel(name = "当前节点", width = 15)
+    @ApiModelProperty(value = "当前节点")
+    private String currentNode;
+    /**
+     * 审批状态,如进行中、已结束、已打回
+     */
+    @Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
+    @ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
+    private String approvalStatus;
+    /**
+     * 审批结束时间
+     */
+    @Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "审批结束时间")
+    private Date approvalEndTime;
+}

+ 16 - 15
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/entity/PurchaseAttachments.java → zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/entity/DisposalAttachments.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.purchaseManage.purchasePlan.entity;
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -14,15 +14,15 @@ import java.io.Serializable;
 import java.util.Date;
 
 /**
- * @Description: 采购计划相关附件
+ * @Description: 设备处置--相关附件
  * @Author: jeecg-boot
- * @Date: 2025-04-07
+ * @Date: 2025-04-22
  * @Version: V1.0
  */
-@ApiModel(value = "sbsmzq_purchase_attachments对象", description = "采购计划相关附件")
+@ApiModel(value = "sbsmzq_disposal_attachments对象", description = "设备处置--相关附件")
 @Data
-@TableName("sbsmzq_purchase_attachments")
-public class PurchaseAttachments implements Serializable {
+@TableName("sbsmzq_disposal_attachments")
+public class DisposalAttachments implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -60,6 +60,12 @@ public class PurchaseAttachments implements Serializable {
      */
     @ApiModelProperty(value = "所属部门")
     private String sysOrgCode;
+    /**
+     * 文件名称
+     */
+    @Excel(name = "文件名称", width = 15)
+    @ApiModelProperty(value = "文件名称")
+    private String fileName;
     /**
      * 文件地址
      */
@@ -67,14 +73,9 @@ public class PurchaseAttachments implements Serializable {
     @ApiModelProperty(value = "文件地址")
     private String fileAddress;
     /**
-     * 采购计划id(外键)
+     * 处置信息id
      */
-    @ApiModelProperty(value = "采购计划id(外键)")
-    private String purchasePlanId;
-    /**
-     * 文件名称
-     */
-    @Excel(name = "文件名称", width = 15)
-    @ApiModelProperty(value = "文件名称")
-    private String fileName;
+    @ApiModelProperty(value = "处置信息id")
+    private String disposalId;
+
 }

+ 147 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/entity/DisposalDevice.java

@@ -0,0 +1,147 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 设备处置--处置设备
+ * @Author: jeecg-boot
+ * @Date: 2025-04-22
+ * @Version: V1.0
+ */
+@ApiModel(value = "sbsmzq_disposal_device对象", description = "设备处置--处置设备")
+@Data
+@TableName("sbsmzq_disposal_device")
+public class DisposalDevice implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号", width = 15)
+    @ApiModelProperty(value = "设备编号")
+    private String deviceCode;
+    /**
+     * 设备名称
+     */
+    @Excel(name = "设备名称", width = 15)
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+    /**
+     * 资产编号
+     */
+    @Excel(name = "资产编号", width = 15)
+    @ApiModelProperty(value = "资产编号")
+    private String assetCode;
+    /**
+     * 规格型号
+     */
+    @Excel(name = "规格型号", width = 15)
+    @ApiModelProperty(value = "规格型号")
+    private String spec;
+    /**
+     * 序列号
+     */
+    @Excel(name = "序列号", width = 15)
+    @ApiModelProperty(value = "序列号")
+    private String serialNumber;
+    /**
+     * 类别
+     */
+    @Excel(name = "类别", width = 15)
+    @ApiModelProperty(value = "类别")
+    private Integer category;
+    /**
+     * 当前位置
+     */
+    @Excel(name = "当前位置", width = 15)
+    @ApiModelProperty(value = "当前位置")
+    private String currentLocation;
+    /**
+     * 使用状态
+     */
+    @Excel(name = "使用状态", width = 15)
+    @ApiModelProperty(value = "使用状态")
+    private Integer useStatus;
+    /**
+     * 设备状态
+     */
+    @Excel(name = "设备状态", width = 15)
+    @ApiModelProperty(value = "设备状态")
+    private Integer deviceStatus;
+    /**
+     * 处置后位置
+     */
+    @Excel(name = "处置后位置", width = 15)
+    @ApiModelProperty(value = "处置后位置")
+    private String postLocation;
+    /**
+     * 处置后负责人
+     */
+    @Excel(name = "处置后负责人", width = 15)
+    @ApiModelProperty(value = "处置后负责人")
+    private String postResponsible;
+    /**
+     * 处置原因
+     */
+    @Excel(name = "处置原因", width = 15)
+    @ApiModelProperty(value = "处置原因")
+    private String disposalReason;
+    /**
+     * 处置信息id
+     */
+    @ApiModelProperty(value = "处置信息id")
+    private String disposalId;
+    /**
+     * 设备id
+     */
+    @ApiModelProperty(value = "设备id")
+    private String deviceId;
+
+
+}

+ 23 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/DeviceDisposalMapper.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.dto.DeviceDisposalQueryDTO;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DeviceDisposal;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.vo.DeviceDisposalVO;
+
+/**
+ * @Description: 设备处置
+ * @Author: jeecg-boot
+ * @Date: 2025-04-22
+ * @Version: V1.0
+ */
+public interface DeviceDisposalMapper extends BaseMapper<DeviceDisposal> {
+
+    IPage<DeviceDisposalVO> queryDeviceDisposalPage(Page<DeviceDisposalVO> page, @Param("dto") DeviceDisposalQueryDTO dto);
+
+    Long queryDeviceDisposalCount(@Param("dto") DeviceDisposalQueryDTO dto);
+
+}

+ 7 - 7
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/mapper/PurchaseAttachmentsMapper.java → zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/DisposalAttachmentsMapper.java

@@ -1,17 +1,17 @@
-package org.jeecg.modules.purchaseManage.purchasePlan.mapper;
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper;
 
 import java.util.List;
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchaseAttachments;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalAttachments;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 /**
- * @Description: 采购计划相关附件
+ * @Description: 设备处置--相关附件
  * @Author: jeecg-boot
- * @Date:   2025-04-07
+ * @Date:   2025-04-22
  * @Version: V1.0
  */
-public interface PurchaseAttachmentsMapper extends BaseMapper<PurchaseAttachments> {
+public interface DisposalAttachmentsMapper extends BaseMapper<DisposalAttachments> {
 
 	/**
 	 * 通过主表id删除子表数据
@@ -25,7 +25,7 @@ public interface PurchaseAttachmentsMapper extends BaseMapper<PurchaseAttachment
    * 通过主表id查询子表数据
    *
    * @param mainId 主表id
-   * @return List<PurchaseAttachments>
+   * @return List<DisposalAttachments>
    */
-	public List<PurchaseAttachments> selectByMainId(@Param("mainId") String mainId);
+	public List<DisposalAttachments> selectByMainId(@Param("mainId") String mainId);
 }

+ 7 - 7
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/mapper/EquipmentRelatedFileMapper.java → zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/DisposalDeviceMapper.java

@@ -1,17 +1,17 @@
-package org.jeecg.modules.purchaseManage.equipmentAccept.mapper;
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper;
 
 import java.util.List;
-import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentRelatedFile;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalDevice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 /**
- * @Description: 设备相关文件
+ * @Description: 设备处置--处置设备
  * @Author: jeecg-boot
- * @Date:   2025-04-07
+ * @Date:   2025-04-22
  * @Version: V1.0
  */
-public interface EquipmentRelatedFileMapper extends BaseMapper<EquipmentRelatedFile> {
+public interface DisposalDeviceMapper extends BaseMapper<DisposalDevice> {
 
 	/**
 	 * 通过主表id删除子表数据
@@ -25,7 +25,7 @@ public interface EquipmentRelatedFileMapper extends BaseMapper<EquipmentRelatedF
    * 通过主表id查询子表数据
    *
    * @param mainId 主表id
-   * @return List<EquipmentRelatedFile>
+   * @return List<DisposalDevice>
    */
-	public List<EquipmentRelatedFile> selectByMainId(@Param("mainId") String mainId);
+	public List<DisposalDevice> selectByMainId(@Param("mainId") String mainId);
 }

+ 102 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/xml/DeviceDisposalMapper.xml

@@ -0,0 +1,102 @@
+<?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="org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper.DeviceDisposalMapper">
+
+    <select id="queryDeviceDisposalPage" resultType="org.jeecg.modules.equipmentDisposal.deviceDisposal.vo.DeviceDisposalVO">
+        SELECT
+        ds.disposal_number AS disposalNumber,
+        d.device_code AS deviceCode,
+        d.device_name AS deviceName,
+        d.spec AS spec,
+        d.serial_number AS serialNumber,
+        d.current_location AS currentLocation,
+        d.disposal_reason AS disposalReason,
+        ds.disposal_method AS disposalMethod,
+        ds.application_time AS applicationTime,
+        ds.applicant AS applicant,
+        ds.form_filler AS formFiller,
+        ds.approval_status AS approvalStatus,
+        ds.approval_end_time AS approvalEndTime,
+        b.purchase_date AS purchaseDate,
+        b.expected_discard_date AS expectedDiscardDate
+        FROM
+        device_disposal ds
+        LEFT JOIN sbsmzq_disposal_device d ON ds.id = d.disposal_id
+        LEFT JOIN device_base_info b ON d.device_id = b.id
+        <where>
+            <if test="dto.disposalNumber != null and dto.disposalNumber != ''">
+                AND ds.disposal_number LIKE CONCAT('%', #{dto.disposalNumber}, '%')
+            </if>
+            <if test="dto.applicant != null and dto.applicant != ''">
+                AND ds.applicant = #{dto.applicant}
+            </if>
+            <if test="dto.formFiller != null and dto.formFiller != ''">
+                AND ds.form_filler = #{dto.formFiller}
+            </if>
+            <if test="dto.deviceCode != null and dto.deviceCode != ''">
+                AND d.device_code LIKE CONCAT('%', #{dto.deviceCode}, '%')
+            </if>
+            <if test="dto.deviceName != null and dto.deviceName != ''">
+                AND d.device_name LIKE CONCAT('%', #{dto.deviceName}, '%')
+            </if>
+            <if test="dto.currentLocation != null and dto.currentLocation != ''">
+                AND d.current_location = #{dto.currentLocation}
+            </if>
+            <if test="dto.approvalStatus != null and dto.approvalStatus != ''">
+                AND ds.approval_status = #{dto.approvalStatus}
+            </if>
+            <if test="dto.disposalMethod != null and dto.disposalMethod != ''">
+                AND d.disposal_method = #{dto.disposalMethod}
+            </if>
+            <if test="dto.applicationTimeStart != null">
+                AND ds.application_time &gt;= #{dto.applicationTimeStart}
+            </if>
+            <if test="dto.applicationTimeEnd != null">
+                AND ds.application_time &lt;= #{dto.applicationTimeEnd}
+            </if>
+        </where>
+    </select>
+
+
+    <select id="queryDeviceDisposalCount" resultType="java.lang.Long">
+        SELECT
+        COUNT(1)
+        FROM
+        device_disposal ds
+        LEFT JOIN sbsmzq_disposal_device d ON ds.id = d.disposal_id
+        LEFT JOIN device_base_info b ON d.device_id = b.id
+        <where>
+            <if test="dto.disposalNumber != null and dto.disposalNumber != ''">
+                AND ds.disposal_number LIKE CONCAT('%', #{dto.disposalNumber}, '%')
+            </if>
+            <if test="dto.applicant != null and dto.applicant != ''">
+                AND ds.applicant = #{dto.applicant}
+            </if>
+            <if test="dto.formFiller != null and dto.formFiller != ''">
+                AND ds.form_filler = #{dto.formFiller}
+            </if>
+            <if test="dto.deviceCode != null and dto.deviceCode != ''">
+                AND d.device_code LIKE CONCAT('%', #{dto.deviceCode}, '%')
+            </if>
+            <if test="dto.deviceName != null and dto.deviceName != ''">
+                AND d.device_name LIKE CONCAT('%', #{dto.deviceName}, '%')
+            </if>
+            <if test="dto.currentLocation != null and dto.currentLocation != ''">
+                AND d.current_location = #{dto.currentLocation}
+            </if>
+            <if test="dto.approvalStatus != null and dto.approvalStatus != ''">
+                AND ds.approval_status = #{dto.approvalStatus}
+            </if>
+            <if test="dto.disposalMethod != null and dto.disposalMethod != ''">
+                AND d.disposal_method = #{dto.disposalMethod}
+            </if>
+            <if test="dto.applicationTimeStart != null">
+                AND ds.application_time &gt;= #{dto.applicationTimeStart}
+            </if>
+            <if test="dto.applicationTimeEnd != null">
+                AND ds.application_time &lt;= #{dto.applicationTimeEnd}
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 16 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/xml/DisposalAttachmentsMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper.DisposalAttachmentsMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  sbsmzq_disposal_attachments 
+		WHERE
+			 disposal_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalAttachments">
+		SELECT * 
+		FROM  sbsmzq_disposal_attachments
+		WHERE
+			 disposal_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/mapper/xml/DisposalDeviceMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper.DisposalDeviceMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  sbsmzq_disposal_device 
+		WHERE
+			 disposal_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalDevice">
+		SELECT * 
+		FROM  sbsmzq_disposal_device
+		WHERE
+			 disposal_id = #{mainId} 	</select>
+</mapper>

+ 60 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/IDeviceDisposalService.java

@@ -0,0 +1,60 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.dto.DeviceDisposalQueryDTO;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DeviceDisposal;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalAttachments;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalDevice;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.vo.DeviceDisposalVO;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 设备处置
+ * @Author: jeecg-boot
+ * @Date: 2025-04-22
+ * @Version: V1.0
+ */
+public interface IDeviceDisposalService extends IService<DeviceDisposal> {
+
+    /**
+     * 添加一对多
+     *
+     * @param deviceDisposal
+     * @param disposalAttachmentsList
+     * @param disposalDeviceList
+     */
+    void saveMain(DeviceDisposal deviceDisposal, List<DisposalAttachments> disposalAttachmentsList, List<DisposalDevice> disposalDeviceList);
+
+    /**
+     * 修改一对多
+     *
+     * @param deviceDisposal
+     * @param disposalAttachmentsList
+     * @param disposalDeviceList
+     */
+    void updateMain(DeviceDisposal deviceDisposal, List<DisposalAttachments> disposalAttachmentsList, List<DisposalDevice> disposalDeviceList);
+
+    /**
+     * 删除一对多
+     *
+     * @param id
+     */
+    void delMain(String id);
+
+    /**
+     * 批量删除一对多
+     *
+     * @param idList
+     */
+    void delBatchMain(Collection<? extends Serializable> idList);
+
+    IPage<DeviceDisposalVO> queryDeviceDisposalPage(Page<DeviceDisposalVO> page, DeviceDisposalQueryDTO queryDTO);
+
+    long queryDeviceDisposalCount(DeviceDisposalQueryDTO queryDTO);
+
+}

+ 23 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/IDisposalAttachmentsService.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalAttachments;
+
+import java.util.List;
+
+/**
+ * @Description: 设备处置--相关附件
+ * @Author: jeecg-boot
+ * @Date: 2025-04-22
+ * @Version: V1.0
+ */
+public interface IDisposalAttachmentsService extends IService<DisposalAttachments> {
+
+    /**
+     * 通过主表id查询子表数据
+     *
+     * @param mainId 主表id
+     * @return List<DisposalAttachments>
+     */
+    List<DisposalAttachments> selectByMainId(String mainId);
+}

+ 23 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/IDisposalDeviceService.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalDevice;
+
+import java.util.List;
+
+/**
+ * @Description: 设备处置--处置设备
+ * @Author: jeecg-boot
+ * @Date: 2025-04-22
+ * @Version: V1.0
+ */
+public interface IDisposalDeviceService extends IService<DisposalDevice> {
+
+    /**
+     * 通过主表id查询子表数据
+     *
+     * @param mainId 主表id
+     * @return List<DisposalDevice>
+     */
+    List<DisposalDevice> selectByMainId(String mainId);
+}

+ 114 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/impl/DeviceDisposalServiceImpl.java

@@ -0,0 +1,114 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.dto.DeviceDisposalQueryDTO;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DeviceDisposal;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalAttachments;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalDevice;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper.DeviceDisposalMapper;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper.DisposalAttachmentsMapper;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper.DisposalDeviceMapper;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.service.IDeviceDisposalService;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.vo.DeviceDisposalVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 设备处置
+ * @Author: jeecg-boot
+ * @Date: 2025-04-22
+ * @Version: V1.0
+ */
+@Service
+public class DeviceDisposalServiceImpl extends ServiceImpl<DeviceDisposalMapper, DeviceDisposal> implements IDeviceDisposalService {
+
+    @Autowired
+    private DeviceDisposalMapper deviceDisposalMapper;
+    @Autowired
+    private DisposalAttachmentsMapper disposalAttachmentsMapper;
+    @Autowired
+    private DisposalDeviceMapper disposalDeviceMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveMain(DeviceDisposal deviceDisposal, List<DisposalAttachments> disposalAttachmentsList, List<DisposalDevice> disposalDeviceList) {
+        deviceDisposalMapper.insert(deviceDisposal);
+        if (disposalAttachmentsList != null && disposalAttachmentsList.size() > 0) {
+            for (DisposalAttachments entity : disposalAttachmentsList) {
+                //外键设置
+                entity.setDisposalId(deviceDisposal.getId());
+                disposalAttachmentsMapper.insert(entity);
+            }
+        }
+        if (disposalDeviceList != null && disposalDeviceList.size() > 0) {
+            for (DisposalDevice entity : disposalDeviceList) {
+                //外键设置
+                entity.setDisposalId(deviceDisposal.getId());
+                disposalDeviceMapper.insert(entity);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMain(DeviceDisposal deviceDisposal, List<DisposalAttachments> disposalAttachmentsList, List<DisposalDevice> disposalDeviceList) {
+        deviceDisposalMapper.updateById(deviceDisposal);
+
+        //1.先删除子表数据
+        disposalAttachmentsMapper.deleteByMainId(deviceDisposal.getId());
+        disposalDeviceMapper.deleteByMainId(deviceDisposal.getId());
+
+        //2.子表数据重新插入
+        if (disposalAttachmentsList != null && disposalAttachmentsList.size() > 0) {
+            for (DisposalAttachments entity : disposalAttachmentsList) {
+                //外键设置
+                entity.setDisposalId(deviceDisposal.getId());
+                disposalAttachmentsMapper.insert(entity);
+            }
+        }
+        if (disposalDeviceList != null && disposalDeviceList.size() > 0) {
+            for (DisposalDevice entity : disposalDeviceList) {
+                //外键设置
+                entity.setDisposalId(deviceDisposal.getId());
+                disposalDeviceMapper.insert(entity);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delMain(String id) {
+        disposalAttachmentsMapper.deleteByMainId(id);
+        disposalDeviceMapper.deleteByMainId(id);
+        deviceDisposalMapper.deleteById(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delBatchMain(Collection<? extends Serializable> idList) {
+        for (Serializable id : idList) {
+            disposalAttachmentsMapper.deleteByMainId(id.toString());
+            disposalDeviceMapper.deleteByMainId(id.toString());
+            deviceDisposalMapper.deleteById(id);
+        }
+    }
+
+
+    @Override
+    public IPage<DeviceDisposalVO> queryDeviceDisposalPage(Page<DeviceDisposalVO> page, DeviceDisposalQueryDTO dto) {
+        return deviceDisposalMapper.queryDeviceDisposalPage(page, dto);
+    }
+
+    @Override
+    public long queryDeviceDisposalCount(DeviceDisposalQueryDTO queryDTO) {
+        return deviceDisposalMapper.queryDeviceDisposalCount(queryDTO);
+    }
+
+}

+ 27 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/impl/DisposalAttachmentsServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.service.impl;
+
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalAttachments;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper.DisposalAttachmentsMapper;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.service.IDisposalAttachmentsService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 设备处置--相关附件
+ * @Author: jeecg-boot
+ * @Date:   2025-04-22
+ * @Version: V1.0
+ */
+@Service
+public class DisposalAttachmentsServiceImpl extends ServiceImpl<DisposalAttachmentsMapper, DisposalAttachments> implements IDisposalAttachmentsService {
+	
+	@Autowired
+	private DisposalAttachmentsMapper disposalAttachmentsMapper;
+	
+	@Override
+	public List<DisposalAttachments> selectByMainId(String mainId) {
+		return disposalAttachmentsMapper.selectByMainId(mainId);
+	}
+}

+ 27 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/service/impl/DisposalDeviceServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.service.impl;
+
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalDevice;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.mapper.DisposalDeviceMapper;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.service.IDisposalDeviceService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 设备处置--处置设备
+ * @Author: jeecg-boot
+ * @Date:   2025-04-22
+ * @Version: V1.0
+ */
+@Service
+public class DisposalDeviceServiceImpl extends ServiceImpl<DisposalDeviceMapper, DisposalDevice> implements IDisposalDeviceService {
+	
+	@Autowired
+	private DisposalDeviceMapper disposalDeviceMapper;
+	
+	@Override
+	public List<DisposalDevice> selectByMainId(String mainId) {
+		return disposalDeviceMapper.selectByMainId(mainId);
+	}
+}

+ 109 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/vo/DeviceDisposalPage.java

@@ -0,0 +1,109 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.vo;
+
+import java.util.List;
+
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalAttachments;
+import org.jeecg.modules.equipmentDisposal.deviceDisposal.entity.DisposalDevice;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 设备处置
+ * @Author: jeecg-boot
+ * @Date:   2025-04-22
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="device_disposalPage对象", description="设备处置")
+public class DeviceDisposalPage {
+
+	/**id*/
+	@ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**创建人*/
+	@ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新人*/
+	@ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+	/**所属部门*/
+	@ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**日期*/
+	@Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "日期")
+    private java.util.Date createDate;
+	/**处置单号*/
+	@Excel(name = "处置单号", width = 15)
+	@ApiModelProperty(value = "处置单号")
+    private java.lang.String disposalNumber;
+	/**涉及设备编号*/
+	@Excel(name = "涉及设备编号", width = 15)
+	@ApiModelProperty(value = "涉及设备编号")
+    private java.lang.String deviceNumber;
+	/**涉及设备名称*/
+	@Excel(name = "涉及设备名称", width = 15)
+	@ApiModelProperty(value = "涉及设备名称")
+    private java.lang.String deviceName;
+	/**处置方式,如出租、闲置、禁用等*/
+	@Excel(name = "处置方式,如出租、闲置、禁用等", width = 15)
+	@ApiModelProperty(value = "处置方式,如出租、闲置、禁用等")
+    private java.lang.String disposalMethod;
+	/**说明*/
+	@Excel(name = "说明", width = 15)
+	@ApiModelProperty(value = "说明")
+    private java.lang.String description;
+	/**申请时间*/
+	@Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "申请时间")
+    private java.util.Date applicationTime;
+	/**申请人*/
+	@Excel(name = "申请人", width = 15)
+	@ApiModelProperty(value = "申请人")
+    private java.lang.String applicant;
+	/**填单人*/
+	@Excel(name = "填单人", width = 15)
+	@ApiModelProperty(value = "填单人")
+    private java.lang.String formFiller;
+	/**当前节点*/
+	@Excel(name = "当前节点", width = 15)
+	@ApiModelProperty(value = "当前节点")
+    private java.lang.String currentNode;
+	/**审批状态,如进行中、已结束、已打回*/
+	@Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
+	@ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
+    private java.lang.String approvalStatus;
+	/**审批结束时间*/
+	@Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "审批结束时间")
+    private java.util.Date approvalEndTime;
+
+	@ExcelCollection(name="设备处置--相关附件")
+	@ApiModelProperty(value = "设备处置--相关附件")
+	private List<DisposalAttachments> disposalAttachmentsList;
+	@ExcelCollection(name="设备处置--处置设备")
+	@ApiModelProperty(value = "设备处置--处置设备")
+	private List<DisposalDevice> disposalDeviceList;
+
+}

+ 103 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/vo/DeviceDisposalRecordVO.java

@@ -0,0 +1,103 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class DeviceDisposalRecordVO {
+
+    private String deviceDisposalId;
+
+    /**
+     * 处置单号
+     */
+    @Excel(name = "处置单号", width = 15)
+    @ApiModelProperty(value = "处置单号")
+    private String disposalNumber;
+    /**
+     * 处置方式,如出租、闲置、禁用等
+     */
+    @Excel(name = "处置方式,如出租、闲置、禁用等", width = 15)
+    @ApiModelProperty(value = "处置方式,如出租、闲置、禁用等")
+    private String disposalMethod;
+    /**
+     * 申请时间
+     */
+    @Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "申请时间")
+    private Date applicationTime;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicant;
+    /**
+     * 填单人
+     */
+    @Excel(name = "填单人", width = 15)
+    @ApiModelProperty(value = "填单人")
+    private String formFiller;
+    /**
+     * 审批状态,如进行中、已结束、已打回
+     */
+    @Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
+    @ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
+    private String approvalStatus;
+    /**
+     * 审批结束时间
+     */
+    @Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "审批结束时间")
+    private Date approvalEndTime;
+
+    private String disposalDeviceId;
+
+    /**
+     * 设备名称
+     */
+    @Excel(name = "设备名称", width = 15)
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号", width = 15)
+    @ApiModelProperty(value = "设备编号")
+    private String deviceCode;
+    /**
+     * 规格型号
+     */
+    @Excel(name = "规格型号", width = 15)
+    @ApiModelProperty(value = "规格型号")
+    private String spec;
+    /**
+     * 序列号
+     */
+    @Excel(name = "序列号", width = 15)
+    @ApiModelProperty(value = "序列号")
+    private String serialNumber;
+    /**
+     * 当前位置
+     */
+    @Excel(name = "当前位置", width = 15)
+    @ApiModelProperty(value = "当前位置")
+    private String currentLocation;
+    /**
+     * 处置原因
+     */
+    @Excel(name = "处置原因", width = 15)
+    @ApiModelProperty(value = "处置原因")
+    private String disposalReason;
+
+
+}

+ 72 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceDisposal/vo/DeviceDisposalVO.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.equipmentDisposal.deviceDisposal.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class DeviceDisposalVO {
+
+    /**
+     * 处置单号
+     */
+    private String disposalNumber;
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+    /**
+     * 规格型号
+     */
+    private String spec;
+    /**
+     * 序列号
+     */
+    private String serialNumber;
+    /**
+     * 所属部门
+     */
+    private String sysOrgCode;
+    /**
+     * 功能位置
+     */
+    private String currentLocation;
+    /**
+     * 预计报废日期
+     */
+    private Date expectedDiscardDate;
+    /**
+     * 购置日期
+     */
+    private Date purchaseDate;
+    /**
+     * 处置方式
+     */
+    private String disposalMethod;
+    /**
+     * 处置原因
+     */
+    private String disposalReason;
+    /**
+     * 申请时间
+     */
+    private Date applicationTime;
+    /**
+     * 申请人
+     */
+    private String applicant;
+    /**
+     * 填单人
+     */
+    private String formFiller;
+    /**
+     * 申请状态
+     */
+    private String approvalStatus;
+
+
+}

+ 331 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/controller/DeviceSaleController.java

@@ -0,0 +1,331 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.CommonAPI;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.equipmentDisposal.deviceSale.dto.DeviceSaleItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.DeviceSale;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.SaleDevice;
+import org.jeecg.modules.equipmentDisposal.deviceSale.service.IDeviceSaleService;
+import org.jeecg.modules.equipmentDisposal.deviceSale.service.ISaleDeviceService;
+import org.jeecg.modules.equipmentDisposal.deviceSale.vo.DeviceSaleItemVO;
+import org.jeecg.modules.equipmentDisposal.deviceSale.vo.DeviceSalePage;
+import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @Description: 设备变卖
+ * @Author: jeecg-boot
+ * @Date: 2025-05-08
+ * @Version: V1.0
+ */
+@Api(tags = "设备变卖")
+@RestController
+@RequestMapping("/equipmentDisposal/deviceSale")
+@Slf4j
+public class DeviceSaleController {
+
+    @Lazy
+    @Resource
+    private CommonAPI commonApi;
+
+    @Lazy
+    @Resource
+    private RedisUtil redisUtil;
+
+    @Autowired
+    private SysBaseApiImpl sysBaseApi;
+
+    @Autowired
+    private IDeviceSaleService deviceSaleService;
+    @Autowired
+    private ISaleDeviceService saleDeviceService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param deviceSale
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "设备变卖-分页列表查询")
+    @ApiOperation(value = "设备变卖-分页列表查询", notes = "设备变卖-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<DeviceSale>> queryPageList(DeviceSale deviceSale,
+                                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                   HttpServletRequest req) {
+        QueryWrapper<DeviceSale> queryWrapper = QueryGenerator.initQueryWrapper(deviceSale, req.getParameterMap());
+        Page<DeviceSale> page = new Page<DeviceSale>(pageNo, pageSize);
+        IPage<DeviceSale> pageList = deviceSaleService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 添加
+     *
+     * @param deviceSalePage
+     * @return
+     */
+    @AutoLog(value = "设备变卖-添加")
+    @ApiOperation(value = "设备变卖-添加", notes = "设备变卖-添加")
+    @RequiresPermissions("equipmentDisposal:device_sale:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody DeviceSalePage deviceSalePage) {
+        DeviceSale deviceSale = new DeviceSale();
+        BeanUtils.copyProperties(deviceSalePage, deviceSale);
+        deviceSaleService.saveMain(deviceSale, deviceSalePage.getSaleDeviceList());
+        return Result.OK("添加成功!");
+    }
+
+    /**
+     * 编辑
+     *
+     * @param deviceSalePage
+     * @return
+     */
+    @AutoLog(value = "设备变卖-编辑")
+    @ApiOperation(value = "设备变卖-编辑", notes = "设备变卖-编辑")
+    @RequiresPermissions("equipmentDisposal:device_sale:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody DeviceSalePage deviceSalePage) {
+        DeviceSale deviceSale = new DeviceSale();
+        BeanUtils.copyProperties(deviceSalePage, deviceSale);
+        DeviceSale deviceSaleEntity = deviceSaleService.getById(deviceSale.getId());
+        if (deviceSaleEntity == null) {
+            return Result.error("未找到对应数据");
+        }
+        deviceSaleService.updateMain(deviceSale, deviceSalePage.getSaleDeviceList());
+        return Result.OK("编辑成功!");
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "设备变卖-通过id删除")
+    @ApiOperation(value = "设备变卖-通过id删除", notes = "设备变卖-通过id删除")
+    @RequiresPermissions("equipmentDisposal:device_sale:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        deviceSaleService.delMain(id);
+        return Result.OK("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "设备变卖-批量删除")
+    @ApiOperation(value = "设备变卖-批量删除", notes = "设备变卖-批量删除")
+    @RequiresPermissions("equipmentDisposal:device_sale:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.deviceSaleService.delBatchMain(Arrays.asList(ids.split(",")));
+        return Result.OK("批量删除成功!");
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "设备变卖-通过id查询")
+    @ApiOperation(value = "设备变卖-通过id查询", notes = "设备变卖-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<DeviceSale> queryById(@RequestParam(name = "id", required = true) String id) {
+        DeviceSale deviceSale = deviceSaleService.getById(id);
+        if (deviceSale == null) {
+            return Result.error("未找到对应数据");
+        }
+        return Result.OK(deviceSale);
+
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "变卖设备通过主表ID查询")
+    @ApiOperation(value = "变卖设备主表ID查询", notes = "变卖设备-通主表ID查询")
+    @GetMapping(value = "/querySaleDeviceByMainId")
+    public Result<List<SaleDevice>> querySaleDeviceListByMainId(@RequestParam(name = "id", required = true) String id) {
+        List<SaleDevice> saleDeviceList = saleDeviceService.selectByMainId(id);
+        return Result.OK(saleDeviceList);
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param deviceSale
+     */
+    @RequiresPermissions("equipmentDisposal:device_sale:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, DeviceSale deviceSale) {
+        // Step.1 组装查询条件查询数据
+        QueryWrapper<DeviceSale> queryWrapper = QueryGenerator.initQueryWrapper(deviceSale, request.getParameterMap());
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+        //配置选中数据查询条件
+        String selections = request.getParameter("selections");
+        if (oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            queryWrapper.in("id", selectionList);
+        }
+        //Step.2 获取导出数据
+        List<DeviceSale> deviceSaleList = deviceSaleService.list(queryWrapper);
+
+        // Step.3 组装pageList
+        List<DeviceSalePage> pageList = new ArrayList<DeviceSalePage>();
+        for (DeviceSale main : deviceSaleList) {
+            DeviceSalePage vo = new DeviceSalePage();
+            BeanUtils.copyProperties(main, vo);
+            List<SaleDevice> saleDeviceList = saleDeviceService.selectByMainId(main.getId());
+            vo.setSaleDeviceList(saleDeviceList);
+            pageList.add(vo);
+        }
+
+        // Step.4 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        mv.addObject(NormalExcelConstants.FILE_NAME, "设备变卖列表");
+        mv.addObject(NormalExcelConstants.CLASS, DeviceSalePage.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("设备变卖数据", "导出人:" + sysUser.getRealname(), "设备变卖"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequiresPermissions("equipmentDisposal:device_sale:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            // 获取上传文件对象
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<DeviceSalePage> list = ExcelImportUtil.importExcel(file.getInputStream(), DeviceSalePage.class, params);
+                for (DeviceSalePage page : list) {
+                    DeviceSale po = new DeviceSale();
+                    BeanUtils.copyProperties(page, po);
+                    deviceSaleService.saveMain(po, page.getSaleDeviceList());
+                }
+                return Result.OK("文件导入成功!数据行数:" + list.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.OK("文件导入失败!");
+    }
+
+    /**
+     * 分页列表查询(与我相关)
+     *
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "设备变卖-分页列表查询(与我相关)", notes = "设备变卖--分页列表查询(与我相关)")
+    @GetMapping(value = "/listByUser")
+    public Result<IPage<DeviceSale>> queryPageListByUser(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                         HttpServletRequest req) {
+
+        LoginUser loginUser = TokenUtils.getLoginUser(req, commonApi, redisUtil);
+        // 构建查询条件
+        LambdaQueryWrapper<DeviceSale> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(DeviceSale::getApplicant, loginUser.getId());
+        QueryGenerator.initQueryWrapper(queryWrapper, req.getParameterMap());
+        Page<DeviceSale> page = new Page<DeviceSale>(pageNo, pageSize);
+        IPage<DeviceSale> pageList = deviceSaleService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+
+    @ApiOperation(value = "设备变卖记录-申请信息与变卖信息组合查询", notes = "设备变卖记录-申请信息与变卖信息组合查询")
+    @GetMapping("/listSaleItems")
+    public Result<IPage<DeviceSaleItemVO>> listSaleItems(
+            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+            DeviceSaleItemQuery query) {
+
+        // 禁用自动 searchCount
+        Page<DeviceSaleItemVO> page = new Page<>(pageNo, pageSize, false); // false 表示不自动 count
+
+        // 查询当前页数据
+        IPage<DeviceSaleItemVO> pagedSaleItems = deviceSaleService.getPagedSaleItems(page, query);
+
+        // 手动查询总数
+        long total = deviceSaleService.getSaleItemsCount(query);
+
+        // 设置数据与总数
+        page.setRecords(pagedSaleItems.getRecords());
+        page.setTotal(total);
+
+        return Result.OK(page);
+    }
+
+}

+ 37 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/dto/DeviceSaleItemQuery.java

@@ -0,0 +1,37 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+@Data
+public class DeviceSaleItemQuery {
+
+    /**
+     * 所属部门
+     */
+    private String sysOrgCode;
+    /**
+     * 类别
+     */
+    private String category;
+    /**
+     * 申请开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startTime;
+    /**
+     * 申请结束时间时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endTime;
+
+    /**
+     * 变卖单号/设备名称/规格型号/申请人,模糊搜索
+     */
+    private String keyword;
+}

+ 143 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/entity/DeviceSale.java

@@ -0,0 +1,143 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 设备变卖
+ * @Author: jeecg-boot
+ * @Date: 2025-05-08
+ * @Version: V1.0
+ */
+@ApiModel(value = "device_sale对象", description = "设备变卖")
+@Data
+@TableName("device_sale")
+public class DeviceSale implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "日期")
+    private Date createDate;
+    /**
+     * 变卖申请单号
+     */
+    @Excel(name = "变卖申请单号", width = 15)
+    @ApiModelProperty(value = "变卖申请单号")
+    private String saleNumber;
+    /**
+     * 涉及设备编号
+     */
+    @Excel(name = "涉及设备编号", width = 15)
+    @ApiModelProperty(value = "涉及设备编号")
+    private String deviceNumber;
+    /**
+     * 涉及设备名称
+     */
+    @Excel(name = "涉及设备名称", width = 15)
+    @ApiModelProperty(value = "涉及设备名称")
+    private String deviceName;
+    /**
+     * 变卖原因
+     */
+    @Excel(name = "变卖原因", width = 15)
+    @ApiModelProperty(value = "变卖原因")
+    private String saleReason;
+    /**
+     * 申请时间
+     */
+    @Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "申请时间")
+    private Date applicationTime;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicant;
+    /**
+     * 填单人
+     */
+    @Excel(name = "填单人", width = 15)
+    @ApiModelProperty(value = "填单人")
+    private String formFiller;
+    /**
+     * 当前节点
+     */
+    @Excel(name = "当前节点", width = 15)
+    @ApiModelProperty(value = "当前节点")
+    private String currentNode;
+    /**
+     * 审批状态,如进行中、已结束、已打回
+     */
+    @Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
+    @ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
+    private String approvalStatus;
+    /**
+     * 审批结束时间
+     */
+    @Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "审批结束时间")
+    private Date approvalEndTime;
+    /**
+     * 变卖提交日期
+     */
+    @Excel(name = "变卖提交日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "变卖提交日期")
+    private Date disposalSubmissionDate;
+}

+ 135 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/entity/SaleDevice.java

@@ -0,0 +1,135 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description: 变卖设备
+ * @Author: jeecg-boot
+ * @Date: 2025-05-08
+ * @Version: V1.0
+ */
+@ApiModel(value = "sbsmzq_sale_device对象", description = "设备变卖--变卖信息")
+@Data
+@TableName("sbsmzq_sale_device")
+public class SaleDevice implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号", width = 15)
+    @ApiModelProperty(value = "设备编号")
+    private String deviceCode;
+    /**
+     * 设备名称
+     */
+    @Excel(name = "设备名称", width = 15)
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+    /**
+     * 规格型号
+     */
+    @Excel(name = "规格型号", width = 15)
+    @ApiModelProperty(value = "规格型号")
+    private String spec;
+    /**
+     * 类别
+     */
+    @Excel(name = "类别", width = 15)
+    @ApiModelProperty(value = "类别")
+    private String category;
+    /**
+     * 采购金额
+     */
+    @Excel(name = "采购金额", width = 15)
+    @ApiModelProperty(value = "采购金额")
+    private BigDecimal purchaseAmount;
+    /**
+     * 净值
+     */
+    @Excel(name = "净值", width = 15)
+    @ApiModelProperty(value = "净值")
+    private BigDecimal currentValue;
+    /**
+     * 是否报废
+     */
+    @Excel(name = "是否报废", width = 15)
+    @ApiModelProperty(value = "是否报废")
+    private Integer isScrapped;
+    /**
+     * 预计售卖金额
+     */
+    @Excel(name = "预计售卖金额", width = 15)
+    @ApiModelProperty(value = "预计售卖金额")
+    private BigDecimal estimatedSaleAmount;
+    /**
+     * 实际金额
+     */
+    @Excel(name = "实际金额", width = 15)
+    @ApiModelProperty(value = "实际金额")
+    private BigDecimal actualAmount;
+    /**
+     * 备注
+     */
+    @Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remark;
+    /**
+     * 设备变卖id
+     */
+    @ApiModelProperty(value = "设备变卖id")
+    private String saleId;
+    /**
+     * 设备id
+     */
+    @Excel(name = "设备id", width = 15)
+    @ApiModelProperty(value = "设备id")
+    private String deviceId;
+}

+ 23 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/mapper/DeviceSaleMapper.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.equipmentDisposal.deviceSale.dto.DeviceSaleItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.DeviceSale;
+import org.jeecg.modules.equipmentDisposal.deviceSale.vo.DeviceSaleItemVO;
+
+/**
+ * @Description: 设备变卖
+ * @Author: jeecg-boot
+ * @Date: 2025-05-08
+ * @Version: V1.0
+ */
+public interface DeviceSaleMapper extends BaseMapper<DeviceSale> {
+
+    IPage<DeviceSaleItemVO> querySaleItemsPage(Page<DeviceSaleItemVO> page, @Param("query") DeviceSaleItemQuery query);
+
+    Long countSaleItems(@Param("query") DeviceSaleItemQuery query);
+
+}

+ 31 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/mapper/SaleDeviceMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.mapper;
+
+import java.util.List;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.SaleDevice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 变卖设备
+ * @Author: jeecg-boot
+ * @Date:   2025-05-08
+ * @Version: V1.0
+ */
+public interface SaleDeviceMapper extends BaseMapper<SaleDevice> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<SaleDevice>
+   */
+	public List<SaleDevice> selectByMainId(@Param("mainId") String mainId);
+}

+ 83 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/mapper/xml/DeviceSaleMapper.xml

@@ -0,0 +1,83 @@
+<?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="org.jeecg.modules.equipmentDisposal.deviceSale.mapper.DeviceSaleMapper">
+
+    <select id="querySaleItemsPage" resultType="org.jeecg.modules.equipmentDisposal.deviceSale.vo.DeviceSaleItemVO">
+        SELECT
+        ds.id AS saleId,
+        ds.sale_number,
+        ds.applicant,
+        ds.application_time,
+        ds.approval_status,
+        ti.id AS itemId,
+        ti.device_code,
+        ti.device_name,
+        ti.sys_org_code,
+        ti.spec,
+        ti.category,
+        ti.is_scrapped,
+        ti.purchase_amount,
+        ti.current_value,
+        ti.estimated_sale_amount,
+        ti.actual_amount,
+        ti.remark
+        FROM device_sale ds
+        LEFT JOIN sbsmzq_sale_device ti
+        ON ds.id COLLATE utf8mb4_general_ci = ti.sale_id COLLATE utf8mb4_general_ci
+        <where>
+            <if test="query.sysOrgCode != null and query.sysOrgCode != ''">
+                AND ti.sys_org_code = #{query.sysOrgCode}
+            </if>
+            <if test="query.category != null and query.category != ''">
+                AND ti.category = #{query.category}
+            </if>
+            <if test="query.startTime != null">
+                AND ds.application_time &gt;= #{query.startTime}
+            </if>
+            <if test="query.endTime != null">
+                AND ds.application_time &lt;= #{query.endTime}
+            </if>
+            <if test="query.keyword != null and query.keyword != ''">
+                AND (
+                ds.sale_number LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ds.applicant LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ti.device_code LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ti.spec LIKE CONCAT('%', #{query.keyword}, '%')
+                )
+            </if>
+        </where>
+        ORDER BY ds.application_time DESC
+    </select>
+
+
+    <select id="countSaleItems" resultType="java.lang.Long">
+        SELECT COUNT(1)
+        FROM device_sale ds
+        LEFT JOIN sbsmzq_sale_device ti
+        ON ds.id COLLATE utf8mb4_general_ci = ti.sale_id COLLATE utf8mb4_general_ci
+        <where>
+            <if test="query.sysOrgCode != null and query.sysOrgCode != ''">
+                AND ti.sys_org_code = #{query.sysOrgCode}
+            </if>
+            <if test="query.category != null and query.category != ''">
+                AND ti.category = #{query.category}
+            </if>
+            <if test="query.startTime != null">
+                AND ds.application_time &gt;= #{query.startTime}
+            </if>
+            <if test="query.endTime != null">
+                AND ds.application_time &lt;= #{query.endTime}
+            </if>
+            <if test="query.keyword != null and query.keyword != ''">
+                AND (
+                ds.sale_number LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ds.applicant LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ti.device_code LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ti.spec LIKE CONCAT('%', #{query.keyword}, '%')
+                )
+            </if>
+        </where>
+        ORDER BY ds.application_time DESC
+    </select>
+
+</mapper>

+ 16 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/mapper/xml/SaleDeviceMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.equipmentDisposal.deviceSale.mapper.SaleDeviceMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  sbsmzq_sale_device 
+		WHERE
+			 sale_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.equipmentDisposal.deviceSale.entity.SaleDevice">
+		SELECT * 
+		FROM  sbsmzq_sale_device
+		WHERE
+			 sale_id = #{mainId} 	</select>
+</mapper>

+ 57 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/service/IDeviceSaleService.java

@@ -0,0 +1,57 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.equipmentDisposal.deviceSale.dto.DeviceSaleItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.DeviceSale;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.SaleDevice;
+import org.jeecg.modules.equipmentDisposal.deviceSale.vo.DeviceSaleItemVO;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 设备变卖
+ * @Author: jeecg-boot
+ * @Date: 2025-05-08
+ * @Version: V1.0
+ */
+public interface IDeviceSaleService extends IService<DeviceSale> {
+
+    /**
+     * 添加一对多
+     *
+     * @param deviceSale
+     * @param saleDeviceList
+     */
+    void saveMain(DeviceSale deviceSale, List<SaleDevice> saleDeviceList);
+
+    /**
+     * 修改一对多
+     *
+     * @param deviceSale
+     * @param saleDeviceList
+     */
+    void updateMain(DeviceSale deviceSale, List<SaleDevice> saleDeviceList);
+
+    /**
+     * 删除一对多
+     *
+     * @param id
+     */
+    void delMain(String id);
+
+    /**
+     * 批量删除一对多
+     *
+     * @param idList
+     */
+    void delBatchMain(Collection<? extends Serializable> idList);
+
+    IPage<DeviceSaleItemVO> getPagedSaleItems(Page<DeviceSaleItemVO> page, DeviceSaleItemQuery query);
+
+    long getSaleItemsCount(DeviceSaleItemQuery query);
+
+}

+ 23 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/service/ISaleDeviceService.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.SaleDevice;
+
+import java.util.List;
+
+/**
+ * @Description: 变卖设备
+ * @Author: jeecg-boot
+ * @Date: 2025-05-08
+ * @Version: V1.0
+ */
+public interface ISaleDeviceService extends IService<SaleDevice> {
+
+    /**
+     * 通过主表id查询子表数据
+     *
+     * @param mainId 主表id
+     * @return List<SaleDevice>
+     */
+    List<SaleDevice> selectByMainId(String mainId);
+}

+ 92 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/service/impl/DeviceSaleServiceImpl.java

@@ -0,0 +1,92 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.equipmentDisposal.deviceSale.dto.DeviceSaleItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.DeviceSale;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.SaleDevice;
+import org.jeecg.modules.equipmentDisposal.deviceSale.mapper.DeviceSaleMapper;
+import org.jeecg.modules.equipmentDisposal.deviceSale.mapper.SaleDeviceMapper;
+import org.jeecg.modules.equipmentDisposal.deviceSale.service.IDeviceSaleService;
+import org.jeecg.modules.equipmentDisposal.deviceSale.vo.DeviceSaleItemVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 设备变卖
+ * @Author: jeecg-boot
+ * @Date: 2025-05-08
+ * @Version: V1.0
+ */
+@Service
+public class DeviceSaleServiceImpl extends ServiceImpl<DeviceSaleMapper, DeviceSale> implements IDeviceSaleService {
+
+    @Autowired
+    private DeviceSaleMapper deviceSaleMapper;
+    @Autowired
+    private SaleDeviceMapper saleDeviceMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveMain(DeviceSale deviceSale, List<SaleDevice> saleDeviceList) {
+        deviceSaleMapper.insert(deviceSale);
+        if (saleDeviceList != null && saleDeviceList.size() > 0) {
+            for (SaleDevice entity : saleDeviceList) {
+                //外键设置
+                entity.setSaleId(deviceSale.getId());
+                saleDeviceMapper.insert(entity);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMain(DeviceSale deviceSale, List<SaleDevice> saleDeviceList) {
+        deviceSaleMapper.updateById(deviceSale);
+
+        //1.先删除子表数据
+        saleDeviceMapper.deleteByMainId(deviceSale.getId());
+
+        //2.子表数据重新插入
+        if (saleDeviceList != null && saleDeviceList.size() > 0) {
+            for (SaleDevice entity : saleDeviceList) {
+                //外键设置
+                entity.setSaleId(deviceSale.getId());
+                saleDeviceMapper.insert(entity);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delMain(String id) {
+        saleDeviceMapper.deleteByMainId(id);
+        deviceSaleMapper.deleteById(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delBatchMain(Collection<? extends Serializable> idList) {
+        for (Serializable id : idList) {
+            saleDeviceMapper.deleteByMainId(id.toString());
+            deviceSaleMapper.deleteById(id);
+        }
+    }
+
+    @Override
+    public IPage<DeviceSaleItemVO> getPagedSaleItems(Page<DeviceSaleItemVO> page, DeviceSaleItemQuery query) {
+        return deviceSaleMapper.querySaleItemsPage(page, query);
+    }
+
+    @Override
+    public long getSaleItemsCount(DeviceSaleItemQuery query) {
+        return deviceSaleMapper.countSaleItems(query);
+    }
+
+}

+ 27 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/service/impl/SaleDeviceServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.service.impl;
+
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.SaleDevice;
+import org.jeecg.modules.equipmentDisposal.deviceSale.mapper.SaleDeviceMapper;
+import org.jeecg.modules.equipmentDisposal.deviceSale.service.ISaleDeviceService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 变卖设备
+ * @Author: jeecg-boot
+ * @Date:   2025-05-08
+ * @Version: V1.0
+ */
+@Service
+public class SaleDeviceServiceImpl extends ServiceImpl<SaleDeviceMapper, SaleDevice> implements ISaleDeviceService {
+	
+	@Autowired
+	private SaleDeviceMapper saleDeviceMapper;
+	
+	@Override
+	public List<SaleDevice> selectByMainId(String mainId) {
+		return saleDeviceMapper.selectByMainId(mainId);
+	}
+}

+ 31 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/vo/DeviceSaleItemVO.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class DeviceSaleItemVO {
+
+    // DeviceSale 字段
+    private String saleId;  //设备报废id
+    private String saleNumber; //变卖单号
+    private String applicant; //申请人
+    private Date applicationTime; //申请时间
+    private String approvalStatus; //审批状态
+
+    // ScrapDevice 字段
+    private String itemId;   //报废设备id
+    private String deviceCode;  //设备编号
+    private String deviceName;  //设备名称
+    private String sysOrgCode;  //所属部门
+    private String spec;     //规格型号
+    private String category;  //设备类别
+    private Integer isScrapped; //是否报废
+    private BigDecimal purchaseAmount; //采购金额
+    private BigDecimal currentValue;  // 当前净值
+    private BigDecimal estimatedSaleAmount; // 预计售卖金额
+    private BigDecimal actualAmount; //实际金额
+    private String remark;   // 备注
+}

+ 144 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceSale/vo/DeviceSalePage.java

@@ -0,0 +1,144 @@
+package org.jeecg.modules.equipmentDisposal.deviceSale.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.equipmentDisposal.deviceSale.entity.SaleDevice;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: 设备变卖
+ * @Author: jeecg-boot
+ * @Date: 2025-05-08
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value = "device_salePage对象", description = "设备变卖")
+public class DeviceSalePage {
+
+    /**
+     * id
+     */
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "日期")
+    private Date createDate;
+    /**
+     * 变卖申请单号
+     */
+    @Excel(name = "变卖申请单号", width = 15)
+    @ApiModelProperty(value = "变卖申请单号")
+    private String saleNumber;
+    /**
+     * 涉及设备编号
+     */
+    @Excel(name = "涉及设备编号", width = 15)
+    @ApiModelProperty(value = "涉及设备编号")
+    private String deviceNumber;
+    /**
+     * 涉及设备名称
+     */
+    @Excel(name = "涉及设备名称", width = 15)
+    @ApiModelProperty(value = "涉及设备名称")
+    private String deviceName;
+    /**
+     * 变卖原因
+     */
+    @Excel(name = "变卖原因", width = 15)
+    @ApiModelProperty(value = "变卖原因")
+    private String saleReason;
+    /**
+     * 申请时间
+     */
+    @Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "申请时间")
+    private Date applicationTime;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicant;
+    /**
+     * 填单人
+     */
+    @Excel(name = "填单人", width = 15)
+    @ApiModelProperty(value = "填单人")
+    private String formFiller;
+    /**
+     * 当前节点
+     */
+    @Excel(name = "当前节点", width = 15)
+    @ApiModelProperty(value = "当前节点")
+    private String currentNode;
+    /**
+     * 审批状态,如进行中、已结束、已打回
+     */
+    @Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
+    @ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
+    private String approvalStatus;
+    /**
+     * 审批结束时间
+     */
+    @Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "审批结束时间")
+    private Date approvalEndTime;
+    /**
+     * 变卖提交日期
+     */
+    @Excel(name = "变卖提交日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "变卖提交日期")
+    private Date disposalSubmissionDate;
+
+    @ExcelCollection(name = "变卖设备")
+    @ApiModelProperty(value = "变卖设备")
+    private List<SaleDevice> saleDeviceList;
+
+}

+ 328 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/controller/DeviceScrapController.java

@@ -0,0 +1,328 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.CommonAPI;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.dto.DeviceScrapItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.DeviceScrap;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.ScrapDevice;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.service.IDeviceScrapService;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.service.ISbsmzqScrapDeviceService;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.vo.DeviceScrapItemVO;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.vo.DeviceScrapPage;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @Description: 设备报废
+ * @Author: jeecg-boot
+ * @Date: 2025-05-07
+ * @Version: V1.0
+ */
+@Api(tags = "设备报废")
+@RestController
+@RequestMapping("/equipmentDisposal/deviceScrap")
+@Slf4j
+public class DeviceScrapController {
+
+    @Lazy
+    @Resource
+    private CommonAPI commonApi;
+
+    @Lazy
+    @Resource
+    private RedisUtil redisUtil;
+
+    @Autowired
+    private IDeviceScrapService deviceScrapService;
+    @Autowired
+    private ISbsmzqScrapDeviceService sbsmzqScrapDeviceService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param deviceScrap
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "设备报废-分页列表查询")
+    @ApiOperation(value = "设备报废-分页列表查询", notes = "设备报废-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<DeviceScrap>> queryPageList(DeviceScrap deviceScrap,
+                                                    @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                    HttpServletRequest req) {
+        QueryWrapper<DeviceScrap> queryWrapper = QueryGenerator.initQueryWrapper(deviceScrap, req.getParameterMap());
+        Page<DeviceScrap> page = new Page<DeviceScrap>(pageNo, pageSize);
+        IPage<DeviceScrap> pageList = deviceScrapService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 添加
+     *
+     * @param deviceScrapPage
+     * @return
+     */
+    @AutoLog(value = "设备报废-添加")
+    @ApiOperation(value = "设备报废-添加", notes = "设备报废-添加")
+    @RequiresPermissions("equipmentDisposal:device_scrap:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody DeviceScrapPage deviceScrapPage) {
+        DeviceScrap deviceScrap = new DeviceScrap();
+        BeanUtils.copyProperties(deviceScrapPage, deviceScrap);
+        deviceScrapService.saveMain(deviceScrap, deviceScrapPage.getScrapDeviceList());
+        return Result.OK("添加成功!");
+    }
+
+    /**
+     * 编辑
+     *
+     * @param deviceScrapPage
+     * @return
+     */
+    @AutoLog(value = "设备报废-编辑")
+    @ApiOperation(value = "设备报废-编辑", notes = "设备报废-编辑")
+    @RequiresPermissions("equipmentDisposal:device_scrap:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody DeviceScrapPage deviceScrapPage) {
+        DeviceScrap deviceScrap = new DeviceScrap();
+        BeanUtils.copyProperties(deviceScrapPage, deviceScrap);
+        DeviceScrap deviceScrapEntity = deviceScrapService.getById(deviceScrap.getId());
+        if (deviceScrapEntity == null) {
+            return Result.error("未找到对应数据");
+        }
+        deviceScrapService.updateMain(deviceScrap, deviceScrapPage.getScrapDeviceList());
+        return Result.OK("编辑成功!");
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "设备报废-通过id删除")
+    @ApiOperation(value = "设备报废-通过id删除", notes = "设备报废-通过id删除")
+    @RequiresPermissions("equipmentDisposal:device_scrap:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        deviceScrapService.delMain(id);
+        return Result.OK("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "设备报废-批量删除")
+    @ApiOperation(value = "设备报废-批量删除", notes = "设备报废-批量删除")
+    @RequiresPermissions("equipmentDisposal:device_scrap:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.deviceScrapService.delBatchMain(Arrays.asList(ids.split(",")));
+        return Result.OK("批量删除成功!");
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "设备报废-通过id查询")
+    @ApiOperation(value = "设备报废-通过id查询", notes = "设备报废-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<DeviceScrap> queryById(@RequestParam(name = "id", required = true) String id) {
+        DeviceScrap deviceScrap = deviceScrapService.getById(id);
+        if (deviceScrap == null) {
+            return Result.error("未找到对应数据");
+        }
+        return Result.OK(deviceScrap);
+
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "设备报废--设备清单通过主表ID查询")
+    @ApiOperation(value = "设备报废--设备清单主表ID查询", notes = "设备报废--设备清单-通主表ID查询")
+    @GetMapping(value = "/querySbsmzqScrapDeviceByMainId")
+    public Result<List<ScrapDevice>> querySbsmzqScrapDeviceListByMainId(@RequestParam(name = "id", required = true) String id) {
+        List<ScrapDevice> scrapDeviceList = sbsmzqScrapDeviceService.selectByMainId(id);
+        return Result.OK(scrapDeviceList);
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param deviceScrap
+     */
+    @RequiresPermissions("equipmentDisposal:device_scrap:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, DeviceScrap deviceScrap) {
+        // Step.1 组装查询条件查询数据
+        QueryWrapper<DeviceScrap> queryWrapper = QueryGenerator.initQueryWrapper(deviceScrap, request.getParameterMap());
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+        //配置选中数据查询条件
+        String selections = request.getParameter("selections");
+        if (oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            queryWrapper.in("id", selectionList);
+        }
+        //Step.2 获取导出数据
+        List<DeviceScrap> deviceScrapList = deviceScrapService.list(queryWrapper);
+
+        // Step.3 组装pageList
+        List<DeviceScrapPage> pageList = new ArrayList<DeviceScrapPage>();
+        for (DeviceScrap main : deviceScrapList) {
+            DeviceScrapPage vo = new DeviceScrapPage();
+            BeanUtils.copyProperties(main, vo);
+            List<ScrapDevice> scrapDeviceList = sbsmzqScrapDeviceService.selectByMainId(main.getId());
+            vo.setScrapDeviceList(scrapDeviceList);
+            pageList.add(vo);
+        }
+
+        // Step.4 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        mv.addObject(NormalExcelConstants.FILE_NAME, "设备报废列表");
+        mv.addObject(NormalExcelConstants.CLASS, DeviceScrapPage.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("设备报废数据", "导出人:" + sysUser.getRealname(), "设备报废"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequiresPermissions("equipmentDisposal:device_scrap:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            // 获取上传文件对象
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<DeviceScrapPage> list = ExcelImportUtil.importExcel(file.getInputStream(), DeviceScrapPage.class, params);
+                for (DeviceScrapPage page : list) {
+                    DeviceScrap po = new DeviceScrap();
+                    BeanUtils.copyProperties(page, po);
+                    deviceScrapService.saveMain(po, page.getScrapDeviceList());
+                }
+                return Result.OK("文件导入成功!数据行数:" + list.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.OK("文件导入失败!");
+    }
+
+
+    /**
+     * 分页列表查询(与我相关)
+     *
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "设备报废-分页列表查询(与我相关)", notes = "设备报废--分页列表查询(与我相关)")
+    @GetMapping(value = "/listByUser")
+    public Result<IPage<DeviceScrap>> queryPageListByUser(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                          @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                          HttpServletRequest req) {
+
+        LoginUser loginUser = TokenUtils.getLoginUser(req, commonApi, redisUtil);
+        // 构建查询条件
+        LambdaQueryWrapper<DeviceScrap> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(DeviceScrap::getApplicant, loginUser.getId());
+        QueryGenerator.initQueryWrapper(queryWrapper, req.getParameterMap());
+        Page<DeviceScrap> page = new Page<DeviceScrap>(pageNo, pageSize);
+        IPage<DeviceScrap> pageList = deviceScrapService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+
+    @ApiOperation(value = "设备报废记录-报废信息与设备清单信息组合查询", notes = "设备报废记录-报废信息与设备清单信息组合查询")
+    @GetMapping("/listScrapItems")
+    public Result<IPage<DeviceScrapItemVO>> listScrapItems(
+            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+            DeviceScrapItemQuery query) {
+
+        // 禁用自动 searchCount
+        Page<DeviceScrapItemVO> page = new Page<>(pageNo, pageSize, false); // false 表示不自动 count
+
+        // 查询当前页数据
+        IPage<DeviceScrapItemVO> pagedTransferItems = deviceScrapService.getPagedScrapItems(page, query);
+
+        // 手动查询总数
+        long total = deviceScrapService.getScrapItemsCount(query);
+
+        // 设置数据与总数
+        page.setRecords(pagedTransferItems.getRecords());
+        page.setTotal(total);
+
+        return Result.OK(page);
+    }
+
+}

+ 42 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/dto/DeviceScrapItemQuery.java

@@ -0,0 +1,42 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+@Data
+public class DeviceScrapItemQuery {
+
+    /**
+     * 所属部门
+     */
+    private String sysOrgCode;
+    /**
+     * 功能位置
+     */
+    private String currentLocation;
+    /**
+     * 申请开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startTime;
+    /**
+     * 申请结束时间时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endTime;
+
+    /**
+     * 审批状态
+     */
+    private String approvalStatus;
+
+    /**
+     * 处置单号/申请人/填单人/设备编号,模糊搜索
+     */
+    private String keyword;
+}

+ 135 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/entity/DeviceScrap.java

@@ -0,0 +1,135 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 设备报废
+ * @Author: jeecg-boot
+ * @Date: 2025-05-07
+ * @Version: V1.0
+ */
+@ApiModel(value = "device_scrap对象", description = "设备报废")
+@Data
+@TableName("device_scrap")
+public class DeviceScrap implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "日期")
+    private Date createDate;
+    /**
+     * 报废单号
+     */
+    @Excel(name = "报废单号", width = 15)
+    @ApiModelProperty(value = "报废单号")
+    private String scrapNumber;
+    /**
+     * 涉及设备编号
+     */
+    @Excel(name = "涉及设备编号", width = 15)
+    @ApiModelProperty(value = "涉及设备编号")
+    private String deviceNumber;
+    /**
+     * 涉及设备名称
+     */
+    @Excel(name = "涉及设备名称", width = 15)
+    @ApiModelProperty(value = "涉及设备名称")
+    private String deviceName;
+    /**
+     * 说明
+     */
+    @Excel(name = "说明", width = 15)
+    @ApiModelProperty(value = "说明")
+    private String description;
+    /**
+     * 申请时间
+     */
+    @Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "申请时间")
+    private Date applicationTime;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicant;
+    /**
+     * 填单人
+     */
+    @Excel(name = "填单人", width = 15)
+    @ApiModelProperty(value = "填单人")
+    private String formFiller;
+    /**
+     * 当前节点
+     */
+    @Excel(name = "当前节点", width = 15)
+    @ApiModelProperty(value = "当前节点")
+    private String currentNode;
+    /**
+     * 审批状态,如进行中、已结束、已打回
+     */
+    @Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
+    @ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
+    private String approvalStatus;
+    /**
+     * 审批结束时间
+     */
+    @Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "审批结束时间")
+    private Date approvalEndTime;
+}

+ 163 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/entity/ScrapDevice.java

@@ -0,0 +1,163 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description: 设备报废--设备清单
+ * @Author: jeecg-boot
+ * @Date: 2025-05-07
+ * @Version: V1.0
+ */
+@ApiModel(value = "sbsmzq_scrap_device对象", description = "设备报废--设备清单")
+@Data
+@TableName("sbsmzq_scrap_device")
+public class ScrapDevice implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号", width = 15)
+    @ApiModelProperty(value = "设备编号")
+    private String deviceCode;
+    /**
+     * 设备名称
+     */
+    @Excel(name = "设备名称", width = 15)
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+    /**
+     * 资产编号
+     */
+    @Excel(name = "资产编号", width = 15)
+    @ApiModelProperty(value = "资产编号")
+    private String assetCode;
+    /**
+     * 规格型号
+     */
+    @Excel(name = "规格型号", width = 15)
+    @ApiModelProperty(value = "规格型号")
+    private String spec;
+    /**
+     * 序列号
+     */
+    @Excel(name = "序列号", width = 15)
+    @ApiModelProperty(value = "序列号")
+    private String serialNumber;
+    /**
+     * 当前位置
+     */
+    @Excel(name = "当前位置", width = 15)
+    @ApiModelProperty(value = "当前位置")
+    private String currentLocation;
+    /**
+     * 购置日期
+     */
+    @Excel(name = "购置日期", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "购置日期")
+    private Date purchaseDate;
+    /**
+     * 预计报废日期
+     */
+    @Excel(name = "预计报废日期", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "预计报废日期")
+    private Date expectedScrapDate;
+    /**
+     * 采购价格
+     */
+    @Excel(name = "采购价格", width = 15)
+    @ApiModelProperty(value = "采购价格")
+    private BigDecimal purchasePrice;
+    /**
+     * 当前净值
+     */
+    @Excel(name = "当前净值", width = 15)
+    @ApiModelProperty(value = "当前净值")
+    private BigDecimal currentValue;
+    /**
+     * 累计折旧
+     */
+    @Excel(name = "累计折旧", width = 15)
+    @ApiModelProperty(value = "累计折旧")
+    private BigDecimal accumulatedDepr;
+    /**
+     * 使用状态
+     */
+    @Excel(name = "使用状态", width = 15)
+    @ApiModelProperty(value = "使用状态")
+    private Integer usageStatus;
+    /**
+     * 设备状态
+     */
+    @Excel(name = "设备状态", width = 15)
+    @ApiModelProperty(value = "设备状态")
+    private Integer deviceStatus;
+    /**
+     * 报废原因
+     */
+    @Excel(name = "报废原因", width = 15)
+    @ApiModelProperty(value = "报废原因")
+    private String scrapReason;
+    /**
+     * 报废信息id
+     */
+    @ApiModelProperty(value = "报废信息id")
+    private String scrapId;
+    /**
+     * 设备id
+     */
+    @Excel(name = "设备id", width = 15)
+    @ApiModelProperty(value = "设备id")
+    private String deviceId;
+}

+ 23 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/mapper/DeviceScrapMapper.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.dto.DeviceScrapItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.DeviceScrap;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.vo.DeviceScrapItemVO;
+
+/**
+ * @Description: 设备报废
+ * @Author: jeecg-boot
+ * @Date: 2025-05-07
+ * @Version: V1.0
+ */
+public interface DeviceScrapMapper extends BaseMapper<DeviceScrap> {
+
+    IPage<DeviceScrapItemVO> queryScrapItemsPage(Page<DeviceScrapItemVO> page, @Param("query") DeviceScrapItemQuery query);
+
+    Long countScrapItems(@Param("query") DeviceScrapItemQuery query);
+
+}

+ 40 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/mapper/SbsmzqScrapDeviceMapper.java

@@ -0,0 +1,40 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Mapper;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.ScrapDevice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.equipmentDisposal.deviceTransfer.dto.DeviceTransferItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceTransfer.vo.DeviceTransferItemVO;
+
+/**
+ * @Description: 设备报废--设备清单
+ * @Author: jeecg-boot
+ * @Date:   2025-05-07
+ * @Version: V1.0
+ */
+@Mapper
+public interface SbsmzqScrapDeviceMapper extends BaseMapper<ScrapDevice> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<SbsmzqScrapDevice>
+   */
+	public List<ScrapDevice> selectByMainId(@Param("mainId") String mainId);
+
+
+}

+ 89 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/mapper/xml/DeviceScrapMapper.xml

@@ -0,0 +1,89 @@
+<?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="org.jeecg.modules.equipmentDisposal.deviceScrap.mapper.DeviceScrapMapper">
+
+    <select id="queryScrapItemsPage" resultType="org.jeecg.modules.equipmentDisposal.deviceScrap.vo.DeviceScrapItemVO">
+        SELECT
+        ds.id AS scrapId,
+        ds.scrap_number,
+        ds.applicant,
+        ds.form_filler,
+        ds.application_time,
+        ds.approval_status,
+        ti.id AS itemId,
+        ti.device_code,
+        ti.device_name,
+        ti.spec,
+        ti.serial_number,
+        ti.sys_org_code,
+        ti.current_location,
+        ti.expected_scrap_date,
+        ti.purchase_date,
+        ti.current_value,
+        ti.accumulated_depr,
+        ti.scrap_reason
+        FROM device_scrap ds
+        LEFT JOIN sbsmzq_scrap_device ti
+        ON ds.id COLLATE utf8mb4_general_ci = ti.scrap_id COLLATE utf8mb4_general_ci
+        <where>
+            <if test="query.sysOrgCode != null and query.sysOrgCode != ''">
+                AND ds.sys_org_code = #{query.sysOrgCode}
+            </if>
+            <if test="query.approvalStatus != null and query.approvalStatus != ''">
+                AND ds.approval_status = #{query.approvalStatus}
+            </if>
+            <if test="query.currentLocation != null and query.currentLocation != ''">
+                AND ti.current_location LIKE CONCAT('%', #{query.currentLocation}, '%')
+            </if>
+            <if test="query.startTime != null">
+                AND ds.application_time &gt;= #{query.startTime}
+            </if>
+            <if test="query.endTime != null">
+                AND ds.application_time &lt;= #{query.endTime}
+            </if>
+            <if test="query.keyword != null and query.keyword != ''">
+                AND (
+                ds.scrap_number LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ds.applicant LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ds.form_filler LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ti.device_code LIKE CONCAT('%', #{query.keyword}, '%')
+                )
+            </if>
+        </where>
+        ORDER BY ds.application_time DESC
+    </select>
+
+    <select id="countScrapItems" resultType="java.lang.Long">
+        SELECT COUNT(1)
+        FROM device_scrap ds
+        LEFT JOIN sbsmzq_scrap_device ti
+        ON ds.id COLLATE utf8mb4_general_ci = ti.scrap_id COLLATE utf8mb4_general_ci
+        <where>
+            <if test="query.sysOrgCode != null and query.sysOrgCode != ''">
+                AND ds.sys_org_code = #{query.sysOrgCode}
+            </if>
+            <if test="query.approvalStatus != null and query.approvalStatus != ''">
+                AND ds.approval_status = #{query.approvalStatus}
+            </if>
+            <if test="query.currentLocation != null and query.currentLocation != ''">
+                AND ti.current_location LIKE CONCAT('%', #{query.currentLocation}, '%')
+            </if>
+            <if test="query.startTime != null">
+                AND ds.application_time &gt;= #{query.startTime}
+            </if>
+            <if test="query.endTime != null">
+                AND ds.application_time &lt;= #{query.endTime}
+            </if>
+            <if test="query.keyword != null and query.keyword != ''">
+                AND (
+                ds.scrap_number LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ds.applicant LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ds.form_filler LIKE CONCAT('%', #{query.keyword}, '%')
+                OR ti.device_code LIKE CONCAT('%', #{query.keyword}, '%')
+                )
+            </if>
+        </where>
+        ORDER BY ds.application_time DESC
+    </select>
+
+</mapper>

+ 16 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/mapper/xml/SbsmzqScrapDeviceMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.equipmentDisposal.deviceScrap.mapper.SbsmzqScrapDeviceMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  sbsmzq_scrap_device 
+		WHERE
+			 scrap_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.equipmentDisposal.deviceScrap.entity.ScrapDevice">
+		SELECT * 
+		FROM  sbsmzq_scrap_device
+		WHERE
+			 scrap_id = #{mainId} 	</select>
+</mapper>

+ 57 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/service/IDeviceScrapService.java

@@ -0,0 +1,57 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.dto.DeviceScrapItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.DeviceScrap;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.ScrapDevice;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.vo.DeviceScrapItemVO;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 设备报废
+ * @Author: jeecg-boot
+ * @Date: 2025-05-07
+ * @Version: V1.0
+ */
+public interface IDeviceScrapService extends IService<DeviceScrap> {
+
+    /**
+     * 添加一对多
+     *
+     * @param deviceScrap
+     * @param scrapDeviceList
+     */
+    void saveMain(DeviceScrap deviceScrap, List<ScrapDevice> scrapDeviceList);
+
+    /**
+     * 修改一对多
+     *
+     * @param deviceScrap
+     * @param scrapDeviceList
+     */
+    void updateMain(DeviceScrap deviceScrap, List<ScrapDevice> scrapDeviceList);
+
+    /**
+     * 删除一对多
+     *
+     * @param id
+     */
+    void delMain(String id);
+
+    /**
+     * 批量删除一对多
+     *
+     * @param idList
+     */
+    void delBatchMain(Collection<? extends Serializable> idList);
+
+    IPage<DeviceScrapItemVO> getPagedScrapItems(Page<DeviceScrapItemVO> page, DeviceScrapItemQuery query);
+
+    long getScrapItemsCount(DeviceScrapItemQuery query);
+
+}

+ 23 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/service/ISbsmzqScrapDeviceService.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.ScrapDevice;
+
+import java.util.List;
+
+/**
+ * @Description: 设备报废--设备清单
+ * @Author: jeecg-boot
+ * @Date: 2025-05-07
+ * @Version: V1.0
+ */
+public interface ISbsmzqScrapDeviceService extends IService<ScrapDevice> {
+
+    /**
+     * 通过主表id查询子表数据
+     *
+     * @param mainId 主表id
+     * @return List<SbsmzqScrapDevice>
+     */
+    List<ScrapDevice> selectByMainId(String mainId);
+}

+ 92 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/service/impl/DeviceScrapServiceImpl.java

@@ -0,0 +1,92 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.dto.DeviceScrapItemQuery;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.DeviceScrap;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.ScrapDevice;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.mapper.DeviceScrapMapper;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.mapper.SbsmzqScrapDeviceMapper;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.service.IDeviceScrapService;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.vo.DeviceScrapItemVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 设备报废
+ * @Author: jeecg-boot
+ * @Date: 2025-05-07
+ * @Version: V1.0
+ */
+@Service
+public class DeviceScrapServiceImpl extends ServiceImpl<DeviceScrapMapper, DeviceScrap> implements IDeviceScrapService {
+
+    @Autowired
+    private DeviceScrapMapper deviceScrapMapper;
+    @Autowired
+    private SbsmzqScrapDeviceMapper sbsmzqScrapDeviceMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveMain(DeviceScrap deviceScrap, List<ScrapDevice> scrapDeviceList) {
+        deviceScrapMapper.insert(deviceScrap);
+        if (scrapDeviceList != null && scrapDeviceList.size() > 0) {
+            for (ScrapDevice entity : scrapDeviceList) {
+                //外键设置
+                entity.setScrapId(deviceScrap.getId());
+                sbsmzqScrapDeviceMapper.insert(entity);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMain(DeviceScrap deviceScrap, List<ScrapDevice> scrapDeviceList) {
+        deviceScrapMapper.updateById(deviceScrap);
+
+        //1.先删除子表数据
+        sbsmzqScrapDeviceMapper.deleteByMainId(deviceScrap.getId());
+
+        //2.子表数据重新插入
+        if (scrapDeviceList != null && scrapDeviceList.size() > 0) {
+            for (ScrapDevice entity : scrapDeviceList) {
+                //外键设置
+                entity.setScrapId(deviceScrap.getId());
+                sbsmzqScrapDeviceMapper.insert(entity);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delMain(String id) {
+        sbsmzqScrapDeviceMapper.deleteByMainId(id);
+        deviceScrapMapper.deleteById(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delBatchMain(Collection<? extends Serializable> idList) {
+        for (Serializable id : idList) {
+            sbsmzqScrapDeviceMapper.deleteByMainId(id.toString());
+            deviceScrapMapper.deleteById(id);
+        }
+    }
+
+    @Override
+    public IPage<DeviceScrapItemVO> getPagedScrapItems(Page<DeviceScrapItemVO> page, DeviceScrapItemQuery query) {
+        return baseMapper.queryScrapItemsPage(page, query);
+    }
+
+    @Override
+    public long getScrapItemsCount(DeviceScrapItemQuery query) {
+        return baseMapper.countScrapItems(query);
+    }
+
+}

+ 27 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/service/impl/SbsmzqScrapDeviceServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.service.impl;
+
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.ScrapDevice;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.mapper.SbsmzqScrapDeviceMapper;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.service.ISbsmzqScrapDeviceService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 设备报废--设备清单
+ * @Author: jeecg-boot
+ * @Date:   2025-05-07
+ * @Version: V1.0
+ */
+@Service
+public class SbsmzqScrapDeviceServiceImpl extends ServiceImpl<SbsmzqScrapDeviceMapper, ScrapDevice> implements ISbsmzqScrapDeviceService {
+	
+	@Autowired
+	private SbsmzqScrapDeviceMapper sbsmzqScrapDeviceMapper;
+	
+	@Override
+	public List<ScrapDevice> selectByMainId(String mainId) {
+		return sbsmzqScrapDeviceMapper.selectByMainId(mainId);
+	}
+}

+ 40 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/vo/DeviceScrapItemVO.java

@@ -0,0 +1,40 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class DeviceScrapItemVO {
+
+    // DeviceScrap 字段
+    private String scrapId;  //设备报废id
+    private String scrapNumber; //报废单号
+    private String applicant; //申请人
+    private String formFiller; //填单人
+    private Date applicationTime; //申请时间
+    private String approvalStatus; //审批状态
+
+    // ScrapDevice 字段
+    private String itemId;   //报废设备id
+    private String deviceCode;  //设备编号
+    private String deviceName;  //设备名称
+    private String spec;     //规格型号
+    private String serialNumber;  //序列号
+    private String sysOrgCode;  //所属部门
+    private String currentLocation; //功能位置
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private Date expectedScrapDate; //预计报废日期
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private Date purchaseDate; //购置日期
+    private BigDecimal currentValue;  //当前净值
+    private BigDecimal accumulatedDepr; //累计折旧
+    private String scrapReason; //报废原因
+
+
+}

+ 136 - 0
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceScrap/vo/DeviceScrapPage.java

@@ -0,0 +1,136 @@
+package org.jeecg.modules.equipmentDisposal.deviceScrap.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.equipmentDisposal.deviceScrap.entity.ScrapDevice;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: 设备报废
+ * @Author: jeecg-boot
+ * @Date: 2025-05-07
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value = "device_scrapPage对象", description = "设备报废")
+public class DeviceScrapPage {
+
+    /**
+     * id
+     */
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "日期")
+    private Date createDate;
+    /**
+     * 报废单号
+     */
+    @Excel(name = "报废单号", width = 15)
+    @ApiModelProperty(value = "报废单号")
+    private String scrapNumber;
+    /**
+     * 涉及设备编号
+     */
+    @Excel(name = "涉及设备编号", width = 15)
+    @ApiModelProperty(value = "涉及设备编号")
+    private String deviceNumber;
+    /**
+     * 涉及设备名称
+     */
+    @Excel(name = "涉及设备名称", width = 15)
+    @ApiModelProperty(value = "涉及设备名称")
+    private String deviceName;
+    /**
+     * 说明
+     */
+    @Excel(name = "说明", width = 15)
+    @ApiModelProperty(value = "说明")
+    private String description;
+    /**
+     * 申请时间
+     */
+    @Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "申请时间")
+    private Date applicationTime;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicant;
+    /**
+     * 填单人
+     */
+    @Excel(name = "填单人", width = 15)
+    @ApiModelProperty(value = "填单人")
+    private String formFiller;
+    /**
+     * 当前节点
+     */
+    @Excel(name = "当前节点", width = 15)
+    @ApiModelProperty(value = "当前节点")
+    private String currentNode;
+    /**
+     * 审批状态,如进行中、已结束、已打回
+     */
+    @Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
+    @ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
+    private String approvalStatus;
+    /**
+     * 审批结束时间
+     */
+    @Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "审批结束时间")
+    private Date approvalEndTime;
+
+    @ExcelCollection(name = "设备报废--设备清单")
+    @ApiModelProperty(value = "设备报废--设备清单")
+    private List<ScrapDevice> scrapDeviceList;
+
+}

+ 1 - 1
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/controller/DeviceTransferController.java

@@ -304,7 +304,7 @@ public class DeviceTransferController {
      * @param req
      * @return
      */
-    @ApiOperation(value = "设备验收-分页列表查询(与我相关)", notes = "设备验收-分页列表查询(与我相关)")
+    @ApiOperation(value = "调拨列表-分页列表查询(与我相关)", notes = "调拨列表-分页列表查询(与我相关)")
     @GetMapping(value = "/listByUser")
     public Result<IPage<DeviceTransfer>> queryPageListByUser(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                              @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,

+ 44 - 4
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/dto/DeviceTransferItemQuery.java

@@ -1,13 +1,53 @@
 package org.jeecg.modules.equipmentDisposal.deviceTransfer.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
 
 @Data
 public class DeviceTransferItemQuery {
 
-    private String transferNumber;
-    private String transferType;
-    private String outCompany;
+    /**
+     * 申请人
+     */
     private String applicant;
-    private String deviceCode;
+    /**
+     * 申请开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startTime;
+    /**
+     * 申请结束时间时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endTime;
+    /**
+     * 调入部门
+     */
+    private String transferInDept;
+    /**
+     * 调入地点
+     */
+    private String transferInLocation;
+    /**
+     * 调出部门
+     */
+    private String transferOutDept;
+    /**
+     * 调出地点
+     */
+    private String transferOutLocation;
+    /**
+     * 新负责人
+     */
+    private String newResponsible;
+
+    /**
+     * 调拨单号/申请人,模糊搜索
+     */
+    private String keyword;
 }

+ 52 - 20
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/mapper/xml/DeviceTransferMapper.xml

@@ -31,22 +31,38 @@
         LEFT JOIN sbsmzq_transfer_item ti
         ON dt.id COLLATE utf8mb4_general_ci = ti.transfer_id COLLATE utf8mb4_general_ci
         <where>
-            <if test="query.transferNumber != null and query.transferNumber != ''">
-                AND dt.transfer_number LIKE CONCAT('%', #{query.transferNumber}, '%')
+            <if test="query.applicant != null and query.applicant != ''">
+                AND dt.applicant LIKE CONCAT('%', #{query.applicant}, '%')
             </if>
-            <if test="query.transferType != null and query.transferType != ''">
-                AND dt.transfer_type = #{query.transferType}
+            <if test="query.startTime != null">
+                AND dt.application_time &gt;= #{query.startTime}
             </if>
-            <if test="query.outCompany != null and query.outCompany != ''">
-                AND dt.out_company LIKE CONCAT('%', #{query.outCompany}, '%')
+            <if test="query.endTime != null">
+                AND dt.application_time &lt;= #{query.endTime}
             </if>
-            <if test="query.applicant != null and query.applicant != ''">
-                AND dt.applicant LIKE CONCAT('%', #{query.applicant}, '%')
+            <if test="query.transferInDept != null and query.transferInDept != ''">
+                AND ti.transfer_in_dept LIKE CONCAT('%', #{query.transferInDept}, '%')
+            </if>
+            <if test="query.transferInLocation != null and query.transferInLocation != ''">
+                AND ti.transfer_in_location LIKE CONCAT('%', #{query.transferInLocation}, '%')
+            </if>
+            <if test="query.transferOutDept != null and query.transferOutDept != ''">
+                AND ti.transfer_out_dept LIKE CONCAT('%', #{query.transferOutDept}, '%')
+            </if>
+            <if test="query.transferOutLocation != null and query.transferOutLocation != ''">
+                AND ti.transfer_out_location LIKE CONCAT('%', #{query.transferOutLocation}, '%')
+            </if>
+            <if test="query.newResponsible != null and query.newResponsible != ''">
+                AND ti.new_responsible LIKE CONCAT('%', #{query.newResponsible}, '%')
             </if>
-            <if test="query.deviceCode != null and query.deviceCode != ''">
-                AND ti.device_code LIKE CONCAT('%', #{query.deviceCode}, '%')
+            <if test="query.keyword != null and query.keyword != ''">
+                AND (
+                dt.transfer_number LIKE CONCAT('%', #{query.keyword}, '%')
+                OR dt.applicant LIKE CONCAT('%', #{query.keyword}, '%')
+                )
             </if>
         </where>
+        ORDER BY dt.application_time DESC
     </select>
 
     <select id="countTransferItems" resultType="java.lang.Long">
@@ -55,22 +71,38 @@
         LEFT JOIN sbsmzq_transfer_item ti
         ON dt.id COLLATE utf8mb4_general_ci = ti.transfer_id COLLATE utf8mb4_general_ci
         <where>
-            <if test="query.transferNumber != null and query.transferNumber != ''">
-                AND dt.transfer_number LIKE CONCAT('%', #{query.transferNumber}, '%')
+            <if test="query.applicant != null and query.applicant != ''">
+                AND dt.applicant LIKE CONCAT('%', #{query.applicant}, '%')
             </if>
-            <if test="query.transferType != null and query.transferType != ''">
-                AND dt.transfer_type = #{query.transferType}
+            <if test="query.startTime != null">
+                AND dt.application_time &gt;= #{query.startTime}
             </if>
-            <if test="query.outCompany != null and query.outCompany != ''">
-                AND dt.out_company LIKE CONCAT('%', #{query.outCompany}, '%')
+            <if test="query.endTime != null">
+                AND dt.application_time &lt;= #{query.endTime}
             </if>
-            <if test="query.applicant != null and query.applicant != ''">
-                AND dt.applicant LIKE CONCAT('%', #{query.applicant}, '%')
+            <if test="query.transferInDept != null and query.transferInDept != ''">
+                AND ti.transfer_in_dept LIKE CONCAT('%', #{query.transferInDept}, '%')
+            </if>
+            <if test="query.transferInLocation != null and query.transferInLocation != ''">
+                AND ti.transfer_in_location LIKE CONCAT('%', #{query.transferInLocation}, '%')
+            </if>
+            <if test="query.transferOutDept != null and query.transferOutDept != ''">
+                AND ti.transfer_out_dept LIKE CONCAT('%', #{query.transferOutDept}, '%')
+            </if>
+            <if test="query.transferOutLocation != null and query.transferOutLocation != ''">
+                AND ti.transfer_out_location LIKE CONCAT('%', #{query.transferOutLocation}, '%')
+            </if>
+            <if test="query.newResponsible != null and query.newResponsible != ''">
+                AND ti.new_responsible LIKE CONCAT('%', #{query.newResponsible}, '%')
             </if>
-            <if test="query.deviceCode != null and query.deviceCode != ''">
-                AND ti.device_code LIKE CONCAT('%', #{query.deviceCode}, '%')
+            <if test="query.keyword != null and query.keyword != ''">
+                AND (
+                dt.transfer_number LIKE CONCAT('%', #{query.keyword}, '%')
+                OR dt.applicant LIKE CONCAT('%', #{query.keyword}, '%')
+                )
             </if>
         </where>
+        ORDER BY dt.application_time DESC
     </select>
 
 </mapper>

+ 22 - 22
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/vo/DeviceTransferItemVO.java

@@ -9,28 +9,28 @@ public class DeviceTransferItemVO {
 
     // DeviceTransfer 字段
     private String transferId; // deviceTransfer.id
-    private String transferNumber;
-    private Date applicationTime;
-    private String transferType;
-    private String outCompany;
-    private String applicant;
-    private String applicationReason;
-    private String currentNode;
-    private String approvalStatus;
-    private Date approvalEndTime;
+    private String transferNumber; //调拨编号
+    private Date applicationTime;  //申请时间
+    private String transferType;   //调拨类型
+    private String outCompany;    //调出公司
+    private String applicant;     //申请人
+    private String applicationReason;  //申请原因
+    private String currentNode;    //当前节点
+    private String approvalStatus;  //审批状态
+    private Date approvalEndTime;   //审批结束时间
 
     // TransferItem 字段
-    private String itemId;
-    private String deviceCode;
-    private String deviceName;
-    private String assetCode;
-    private String serialNumber;
-    private String spec;
-    private String transferOutDept;
-    private String transferOutLocation;
-    private String originalResponsible;
-    private String transferInDept;
-    private String transferInLocation;
-    private String newResponsible;
-    private String remark;
+    private String itemId;   //调拨列表id
+    private String deviceCode;  //设备编号
+    private String deviceName;  //设备名称
+    private String assetCode;   //资产编号
+    private String serialNumber;  //序列号
+    private String spec;     //规格型号
+    private String transferOutDept;  //调出部门
+    private String transferOutLocation;  //调出地点
+    private String originalResponsible;  //原负责人
+    private String transferInDept;     //调入部门
+    private String transferInLocation;  //调入地点
+    private String newResponsible;    //新负责人
+    private String remark;          //备注
 }

+ 132 - 93
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/equipmentDisposal/deviceTransfer/vo/DeviceTransferPage.java

@@ -1,113 +1,152 @@
 package org.jeecg.modules.equipmentDisposal.deviceTransfer.vo;
 
-import java.util.List;
-
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.jeecg.modules.equipmentDisposal.deviceTransfer.entity.TransferAttachments;
 import org.jeecg.modules.equipmentDisposal.deviceTransfer.entity.TransferItem;
-import lombok.Data;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.jeecgframework.poi.excel.annotation.ExcelCollection;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.format.annotation.DateTimeFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * @Description: 设备调拨转移
  * @Author: jeecg-boot
- * @Date:   2025-04-15
+ * @Date: 2025-04-15
  * @Version: V1.0
  */
 @Data
-@ApiModel(value="device_transferPage对象", description="设备调拨转移")
+@ApiModel(value = "device_transferPage对象", description = "设备调拨转移")
 public class DeviceTransferPage {
 
-	/**id*/
-	@ApiModelProperty(value = "id")
-    private java.lang.String id;
-	/**创建人*/
-	@ApiModelProperty(value = "创建人")
-    private java.lang.String createBy;
-	/**创建时间*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	@ApiModelProperty(value = "创建时间")
+    /**
+     * id
+     */
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
     private java.util.Date createTime;
-	/**更新人*/
-	@ApiModelProperty(value = "更新人")
-    private java.lang.String updateBy;
-	/**更新时间*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	@ApiModelProperty(value = "更新时间")
-    private java.util.Date updateTime;
-	/**所属部门*/
-	@ApiModelProperty(value = "所属部门")
-    private java.lang.String sysOrgCode;
-	/**日期*/
-	@Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	@ApiModelProperty(value = "日期")
-    private java.util.Date createDate;
-	/**序号*/
-	@Excel(name = "序号", width = 15)
-	@ApiModelProperty(value = "序号")
-    private java.lang.String serialNumber;
-	/**调拨编号*/
-	@Excel(name = "调拨编号", width = 15)
-	@ApiModelProperty(value = "调拨编号")
-    private java.lang.String transferNumber;
-	/**申请时间*/
-	@Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	@ApiModelProperty(value = "申请时间")
-    private java.util.Date applicationTime;
-	/**调拨类型,如公司内调拨、跨公司调拨*/
-	@Excel(name = "调拨类型,如公司内调拨、跨公司调拨", width = 15)
-	@ApiModelProperty(value = "调拨类型,如公司内调拨、跨公司调拨")
-    private java.lang.String transferType;
-	/**调出公司*/
-	@Excel(name = "调出公司", width = 15)
-	@ApiModelProperty(value = "调出公司")
-    private java.lang.String outCompany;
-	/**申请人*/
-	@Excel(name = "申请人", width = 15)
-	@ApiModelProperty(value = "申请人")
-    private java.lang.String applicant;
-	/**设备编号*/
-	@Excel(name = "设备编号", width = 15)
-	@ApiModelProperty(value = "设备编号")
-    private java.lang.String deviceNumber;
-	/**设备名称*/
-	@Excel(name = "设备名称", width = 15)
-	@ApiModelProperty(value = "设备名称")
-    private java.lang.String deviceName;
-	/**申请原因*/
-	@Excel(name = "申请原因", width = 15)
-	@ApiModelProperty(value = "申请原因")
-    private java.lang.String applicationReason;
-	/**当前节点*/
-	@Excel(name = "当前节点", width = 15)
-	@ApiModelProperty(value = "当前节点")
-    private java.lang.String currentNode;
-	/**审批状态,如进行中、已结束、已打回*/
-	@Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
-	@ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
-    private java.lang.String approvalStatus;
-	/**审批结束时间*/
-	@Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	@ApiModelProperty(value = "审批结束时间")
-    private java.util.Date approvalEndTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 所属部门
+     */
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "日期")
+    private Date createDate;
+    /**
+     * 序号
+     */
+    @Excel(name = "序号", width = 15)
+    @ApiModelProperty(value = "序号")
+    private String serialNumber;
+    /**
+     * 调拨编号
+     */
+    @Excel(name = "调拨编号", width = 15)
+    @ApiModelProperty(value = "调拨编号")
+    private String transferNumber;
+    /**
+     * 申请时间
+     */
+    @Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "申请时间")
+    private Date applicationTime;
+    /**
+     * 调拨类型,如公司内调拨、跨公司调拨
+     */
+    @Excel(name = "调拨类型,如公司内调拨、跨公司调拨", width = 15)
+    @ApiModelProperty(value = "调拨类型,如公司内调拨、跨公司调拨")
+    private String transferType;
+    /**
+     * 调出公司
+     */
+    @Excel(name = "调出公司", width = 15)
+    @ApiModelProperty(value = "调出公司")
+    private String outCompany;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicant;
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号", width = 15)
+    @ApiModelProperty(value = "设备编号")
+    private String deviceNumber;
+    /**
+     * 设备名称
+     */
+    @Excel(name = "设备名称", width = 15)
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+    /**
+     * 申请原因
+     */
+    @Excel(name = "申请原因", width = 15)
+    @ApiModelProperty(value = "申请原因")
+    private String applicationReason;
+    /**
+     * 当前节点
+     */
+    @Excel(name = "当前节点", width = 15)
+    @ApiModelProperty(value = "当前节点")
+    private String currentNode;
+    /**
+     * 审批状态,如进行中、已结束、已打回
+     */
+    @Excel(name = "审批状态,如进行中、已结束、已打回", width = 15)
+    @ApiModelProperty(value = "审批状态,如进行中、已结束、已打回")
+    private String approvalStatus;
+    /**
+     * 审批结束时间
+     */
+    @Excel(name = "审批结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "审批结束时间")
+    private Date approvalEndTime;
 
-	@ExcelCollection(name="调拨详情--相关附件")
-	@ApiModelProperty(value = "调拨详情--相关附件")
-	private List<TransferAttachments> transferAttachmentsList;
-	@ExcelCollection(name="设备调拨转移--调拨列表")
-	@ApiModelProperty(value = "设备调拨转移--调拨列表")
-	private List<TransferItem> transferItemList;
+    @ExcelCollection(name = "调拨详情--相关附件")
+    @ApiModelProperty(value = "调拨详情--相关附件")
+    private List<TransferAttachments> transferAttachmentsList;
+    @ExcelCollection(name = "设备调拨转移--调拨列表")
+    @ApiModelProperty(value = "设备调拨转移--调拨列表")
+    private List<TransferItem> transferItemList;
 
 }

+ 6 - 6
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/controller/EquipmentAcceptController.java

@@ -17,12 +17,12 @@ import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.RedisUtil;
 import org.jeecg.common.util.TokenUtils;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.service.IAttachmentsService;
 import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentAccept;
 import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentInfo;
-import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentRelatedFile;
 import org.jeecg.modules.purchaseManage.equipmentAccept.service.IEquipmentAcceptService;
 import org.jeecg.modules.purchaseManage.equipmentAccept.service.IEquipmentInfoService;
-import org.jeecg.modules.purchaseManage.equipmentAccept.service.IEquipmentRelatedFileService;
 import org.jeecg.modules.purchaseManage.equipmentAccept.vo.EquipmentAcceptPage;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@@ -70,7 +70,7 @@ public class EquipmentAcceptController {
     @Autowired
     private IEquipmentAcceptService equipmentAcceptService;
     @Autowired
-    private IEquipmentRelatedFileService equipmentRelatedFileService;
+    private IAttachmentsService attachmentsService;
     @Autowired
     private IEquipmentInfoService equipmentInfoService;
 
@@ -191,8 +191,8 @@ public class EquipmentAcceptController {
     //@AutoLog(value = "设备相关文件通过主表ID查询")
     @ApiOperation(value = "设备相关文件主表ID查询", notes = "设备相关文件-通主表ID查询")
     @GetMapping(value = "/queryEquipmentRelatedFileByMainId")
-    public Result<List<EquipmentRelatedFile>> queryEquipmentRelatedFileListByMainId(@RequestParam(name = "id", required = true) String id) {
-        List<EquipmentRelatedFile> equipmentRelatedFileList = equipmentRelatedFileService.selectByMainId(id);
+    public Result<List<Attachments>> queryEquipmentRelatedFileListByMainId(@RequestParam(name = "id", required = true) String id) {
+        List<Attachments> equipmentRelatedFileList = attachmentsService.selectByMainId(id);
         return Result.OK(equipmentRelatedFileList);
     }
 
@@ -237,7 +237,7 @@ public class EquipmentAcceptController {
         for (EquipmentAccept main : equipmentAcceptList) {
             EquipmentAcceptPage vo = new EquipmentAcceptPage();
             BeanUtils.copyProperties(main, vo);
-            List<EquipmentRelatedFile> equipmentRelatedFileList = equipmentRelatedFileService.selectByMainId(main.getId());
+            List<Attachments> equipmentRelatedFileList = attachmentsService.selectByMainId(main.getId());
             vo.setEquipmentRelatedFileList(equipmentRelatedFileList);
             List<EquipmentInfo> equipmentInfoList = equipmentInfoService.selectByMainId(main.getId());
             vo.setEquipmentInfoList(equipmentInfoList);

+ 0 - 116
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/entity/EquipmentRelatedFile.java

@@ -1,116 +0,0 @@
-package org.jeecg.modules.purchaseManage.equipmentAccept.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @Description: 设备相关文件
- * @Author: jeecg-boot
- * @Date: 2025-04-07
- * @Version: V1.0
- */
-@ApiModel(value = "sbsmzq_equipment_related_file对象", description = "设备相关文件")
-@Data
-@TableName("sbsmzq_equipment_related_file")
-public class EquipmentRelatedFile implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @TableId(type = IdType.ASSIGN_ID)
-    @ApiModelProperty(value = "主键")
-    private String id;
-    /**
-     * 创建人
-     */
-    @ApiModelProperty(value = "创建人")
-    private String createBy;
-    /**
-     * 创建日期
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建日期")
-    private Date createTime;
-    /**
-     * 更新人
-     */
-    @ApiModelProperty(value = "更新人")
-    private String updateBy;
-    /**
-     * 更新日期
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "更新日期")
-    private Date updateTime;
-    /**
-     * 所属部门
-     */
-    @ApiModelProperty(value = "所属部门")
-    private String sysOrgCode;
-    /**
-     * 资料编号
-     */
-    @Excel(name = "资料编号", width = 15)
-    @ApiModelProperty(value = "资料编号")
-    private String dataNum;
-    /**
-     * 资料名称
-     */
-    @Excel(name = "资料名称", width = 15)
-    @ApiModelProperty(value = "资料名称")
-    private String dataName;
-    /**
-     * 资料类型
-     */
-    @Excel(name = "资料类型", width = 15)
-    @ApiModelProperty(value = "资料类型")
-    private String dataType;
-    /**
-     * 文档密级
-     */
-    @Excel(name = "文档密级", width = 15)
-    @ApiModelProperty(value = "文档密级")
-    private String fileClassification;
-    /**
-     * 数量
-     */
-    @Excel(name = "数量", width = 15)
-    @ApiModelProperty(value = "数量")
-    private Integer amount;
-    /**
-     * 说明
-     */
-    @Excel(name = "说明", width = 15)
-    @ApiModelProperty(value = "说明")
-    private String description;
-    /**
-     * 上传人
-     */
-    @Excel(name = "上传人", width = 15)
-    @ApiModelProperty(value = "上传人")
-    private String uploader;
-    /**
-     * 上传时间
-     */
-    @Excel(name = "上传时间", width = 15)
-    @ApiModelProperty(value = "上传时间")
-    private String uploadTime;
-    /**
-     * 设备验收id(外键)
-     */
-    @ApiModelProperty(value = "设备验收id(外键)")
-    private String equipmentAcceptId;
-}

+ 0 - 16
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/mapper/xml/EquipmentRelatedFileMapper.xml

@@ -1,16 +0,0 @@
-<?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="org.jeecg.modules.purchaseManage.equipmentAccept.mapper.EquipmentRelatedFileMapper">
-
-	<delete id="deleteByMainId" parameterType="java.lang.String">
-		DELETE 
-		FROM  sbsmzq_equipment_related_file 
-		WHERE
-			 equipment_accept_id = #{mainId} 	</delete>
-	
-	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentRelatedFile">
-		SELECT * 
-		FROM  sbsmzq_equipment_related_file
-		WHERE
-			 equipment_accept_id = #{mainId} 	</select>
-</mapper>

+ 3 - 3
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/service/IEquipmentAcceptService.java

@@ -2,9 +2,9 @@ package org.jeecg.modules.purchaseManage.equipmentAccept.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.attachments.entity.Attachments;
 import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentAccept;
 import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentInfo;
-import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentRelatedFile;
 
 import java.io.Serializable;
 import java.util.Collection;
@@ -25,7 +25,7 @@ public interface IEquipmentAcceptService extends IService<EquipmentAccept> {
      * @param equipmentRelatedFileList
      * @param equipmentInfoList
      */
-    public void saveMain(EquipmentAccept equipmentAccept, List<EquipmentRelatedFile> equipmentRelatedFileList, List<EquipmentInfo> equipmentInfoList);
+    public void saveMain(EquipmentAccept equipmentAccept, List<Attachments> equipmentRelatedFileList, List<EquipmentInfo> equipmentInfoList);
 
     /**
      * 修改一对多
@@ -34,7 +34,7 @@ public interface IEquipmentAcceptService extends IService<EquipmentAccept> {
      * @param equipmentRelatedFileList
      * @param equipmentInfoList
      */
-    public void updateMain(EquipmentAccept equipmentAccept, List<EquipmentRelatedFile> equipmentRelatedFileList, List<EquipmentInfo> equipmentInfoList);
+    public void updateMain(EquipmentAccept equipmentAccept, List<Attachments> equipmentRelatedFileList, List<EquipmentInfo> equipmentInfoList);
 
     /**
      * 删除一对多

+ 0 - 22
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/service/IEquipmentRelatedFileService.java

@@ -1,22 +0,0 @@
-package org.jeecg.modules.purchaseManage.equipmentAccept.service;
-
-import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentRelatedFile;
-import com.baomidou.mybatisplus.extension.service.IService;
-import java.util.List;
-
-/**
- * @Description: 设备相关文件
- * @Author: jeecg-boot
- * @Date:   2025-04-07
- * @Version: V1.0
- */
-public interface IEquipmentRelatedFileService extends IService<EquipmentRelatedFile> {
-
-	/**
-	 * 通过主表id查询子表数据
-	 *
-	 * @param mainId 主表id
-	 * @return List<EquipmentRelatedFile>
-	 */
-	public List<EquipmentRelatedFile> selectByMainId(String mainId);
-}

+ 11 - 15
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/service/impl/EquipmentAcceptServiceImpl.java

@@ -1,12 +1,12 @@
 package org.jeecg.modules.purchaseManage.equipmentAccept.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.mapper.AttachmentsMapper;
 import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentAccept;
 import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentInfo;
-import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentRelatedFile;
 import org.jeecg.modules.purchaseManage.equipmentAccept.mapper.EquipmentAcceptMapper;
 import org.jeecg.modules.purchaseManage.equipmentAccept.mapper.EquipmentInfoMapper;
-import org.jeecg.modules.purchaseManage.equipmentAccept.mapper.EquipmentRelatedFileMapper;
 import org.jeecg.modules.purchaseManage.equipmentAccept.service.IEquipmentAcceptService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -28,19 +28,19 @@ public class EquipmentAcceptServiceImpl extends ServiceImpl<EquipmentAcceptMappe
     @Autowired
     private EquipmentAcceptMapper equipmentAcceptMapper;
     @Autowired
-    private EquipmentRelatedFileMapper equipmentRelatedFileMapper;
+    private AttachmentsMapper attachmentsMapper;
     @Autowired
     private EquipmentInfoMapper equipmentInfoMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveMain(EquipmentAccept equipmentAccept, List<EquipmentRelatedFile> equipmentRelatedFileList, List<EquipmentInfo> equipmentInfoList) {
+    public void saveMain(EquipmentAccept equipmentAccept, List<Attachments> equipmentRelatedFileList, List<EquipmentInfo> equipmentInfoList) {
         equipmentAcceptMapper.insert(equipmentAccept);
         if (equipmentRelatedFileList != null && equipmentRelatedFileList.size() > 0) {
-            for (EquipmentRelatedFile entity : equipmentRelatedFileList) {
+            for (Attachments entity : equipmentRelatedFileList) {
                 //外键设置
-                entity.setEquipmentAcceptId(equipmentAccept.getId());
-                equipmentRelatedFileMapper.insert(entity);
+                entity.setExtId(equipmentAccept.getId());
+                attachmentsMapper.insert(entity);
             }
         }
         if (equipmentInfoList != null && equipmentInfoList.size() > 0) {
@@ -54,19 +54,17 @@ public class EquipmentAcceptServiceImpl extends ServiceImpl<EquipmentAcceptMappe
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateMain(EquipmentAccept equipmentAccept, List<EquipmentRelatedFile> equipmentRelatedFileList, List<EquipmentInfo> equipmentInfoList) {
+    public void updateMain(EquipmentAccept equipmentAccept, List<Attachments> equipmentRelatedFileList, List<EquipmentInfo> equipmentInfoList) {
         equipmentAcceptMapper.updateById(equipmentAccept);
 
-        //1.先删除子表数据
-        equipmentRelatedFileMapper.deleteByMainId(equipmentAccept.getId());
         equipmentInfoMapper.deleteByMainId(equipmentAccept.getId());
 
         //2.子表数据重新插入
         if (equipmentRelatedFileList != null && equipmentRelatedFileList.size() > 0) {
-            for (EquipmentRelatedFile entity : equipmentRelatedFileList) {
+            for (Attachments entity : equipmentRelatedFileList) {
                 //外键设置
-                entity.setEquipmentAcceptId(equipmentAccept.getId());
-                equipmentRelatedFileMapper.insert(entity);
+                entity.setExtId(equipmentAccept.getId());
+                attachmentsMapper.insert(entity);
             }
         }
         if (equipmentInfoList != null && equipmentInfoList.size() > 0) {
@@ -81,7 +79,6 @@ public class EquipmentAcceptServiceImpl extends ServiceImpl<EquipmentAcceptMappe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void delMain(String id) {
-        equipmentRelatedFileMapper.deleteByMainId(id);
         equipmentInfoMapper.deleteByMainId(id);
         equipmentAcceptMapper.deleteById(id);
     }
@@ -90,7 +87,6 @@ public class EquipmentAcceptServiceImpl extends ServiceImpl<EquipmentAcceptMappe
     @Transactional(rollbackFor = Exception.class)
     public void delBatchMain(Collection<? extends Serializable> idList) {
         for (Serializable id : idList) {
-            equipmentRelatedFileMapper.deleteByMainId(id.toString());
             equipmentInfoMapper.deleteByMainId(id.toString());
             equipmentAcceptMapper.deleteById(id);
         }

+ 0 - 27
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/service/impl/EquipmentRelatedFileServiceImpl.java

@@ -1,27 +0,0 @@
-package org.jeecg.modules.purchaseManage.equipmentAccept.service.impl;
-
-import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentRelatedFile;
-import org.jeecg.modules.purchaseManage.equipmentAccept.mapper.EquipmentRelatedFileMapper;
-import org.jeecg.modules.purchaseManage.equipmentAccept.service.IEquipmentRelatedFileService;
-import org.springframework.stereotype.Service;
-import java.util.List;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * @Description: 设备相关文件
- * @Author: jeecg-boot
- * @Date:   2025-04-07
- * @Version: V1.0
- */
-@Service
-public class EquipmentRelatedFileServiceImpl extends ServiceImpl<EquipmentRelatedFileMapper, EquipmentRelatedFile> implements IEquipmentRelatedFileService {
-	
-	@Autowired
-	private EquipmentRelatedFileMapper equipmentRelatedFileMapper;
-	
-	@Override
-	public List<EquipmentRelatedFile> selectByMainId(String mainId) {
-		return equipmentRelatedFileMapper.selectByMainId(mainId);
-	}
-}

+ 2 - 2
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentAccept/vo/EquipmentAcceptPage.java

@@ -4,8 +4,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.jeecg.modules.attachments.entity.Attachments;
 import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentInfo;
-import org.jeecg.modules.purchaseManage.equipmentAccept.entity.EquipmentRelatedFile;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.jeecgframework.poi.excel.annotation.ExcelCollection;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -130,7 +130,7 @@ public class EquipmentAcceptPage {
 
     @ExcelCollection(name = "设备相关文件")
     @ApiModelProperty(value = "设备相关文件")
-    private List<EquipmentRelatedFile> equipmentRelatedFileList;
+    private List<Attachments> equipmentRelatedFileList;
     @ExcelCollection(name = "设备信息")
     @ApiModelProperty(value = "设备信息")
     private List<EquipmentInfo> equipmentInfoList;

+ 0 - 1
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentRelatedFile/fileApplyCategory/service/IFileApplyCategoryService.java

@@ -2,7 +2,6 @@ package org.jeecg.modules.purchaseManage.equipmentRelatedFile.fileApplyCategory.
 
 import org.jeecg.modules.purchaseManage.equipmentRelatedFile.fileApplyCategory.entity.FileApplyCategory;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
 
 import java.util.List;
 

+ 0 - 2
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/equipmentRelatedFile/fileApplyCategory/service/impl/FileApplyCategoryServiceImpl.java

@@ -3,8 +3,6 @@ package org.jeecg.modules.purchaseManage.equipmentRelatedFile.fileApplyCategory.
 import org.jeecg.modules.purchaseManage.equipmentRelatedFile.fileApplyCategory.entity.FileApplyCategory;
 import org.jeecg.modules.purchaseManage.equipmentRelatedFile.fileApplyCategory.mapper.FileApplyCategoryMapper;
 import org.jeecg.modules.purchaseManage.equipmentRelatedFile.fileApplyCategory.service.IFileApplyCategoryService;
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
-import org.jeecg.modules.purchaseManage.purchaseApplication.mapper.PurchaseApplicationAttachmentMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 6 - 6
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/controller/PurchaseApplicationController.java

@@ -17,11 +17,11 @@ import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.RedisUtil;
 import org.jeecg.common.util.TokenUtils;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.service.IAttachmentsService;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.MaterialList;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplication;
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
 import org.jeecg.modules.purchaseManage.purchaseApplication.service.IMaterialListService;
-import org.jeecg.modules.purchaseManage.purchaseApplication.service.IPurchaseApplicationAttachmentService;
 import org.jeecg.modules.purchaseManage.purchaseApplication.service.IPurchaseApplicationService;
 import org.jeecg.modules.purchaseManage.purchaseApplication.vo.PurchaseApplicationPage;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
@@ -70,7 +70,7 @@ public class PurchaseApplicationController {
     @Autowired
     private IPurchaseApplicationService purchaseApplicationService;
     @Autowired
-    private IPurchaseApplicationAttachmentService purchaseApplicationAttachmentService;
+    private IAttachmentsService attachmentsService;
     @Autowired
     private IMaterialListService materialListService;
 
@@ -191,8 +191,8 @@ public class PurchaseApplicationController {
     //@AutoLog(value = "采购申请相关附件通过主表ID查询")
     @ApiOperation(value = "采购申请相关附件主表ID查询", notes = "采购申请相关附件-通主表ID查询")
     @GetMapping(value = "/queryPurchaseApplicationAttachmentByMainId")
-    public Result<List<PurchaseApplicationAttachment>> queryPurchaseApplicationAttachmentListByMainId(@RequestParam(name = "id", required = true) String id) {
-        List<PurchaseApplicationAttachment> purchaseApplicationAttachmentList = purchaseApplicationAttachmentService.selectByMainId(id);
+    public Result<List<Attachments>> queryPurchaseApplicationAttachmentListByMainId(@RequestParam(name = "id", required = true) String id) {
+        List<Attachments> purchaseApplicationAttachmentList = attachmentsService.selectByMainId(id);
         return Result.OK(purchaseApplicationAttachmentList);
     }
 
@@ -237,7 +237,7 @@ public class PurchaseApplicationController {
         for (PurchaseApplication main : purchaseApplicationList) {
             PurchaseApplicationPage vo = new PurchaseApplicationPage();
             BeanUtils.copyProperties(main, vo);
-            List<PurchaseApplicationAttachment> purchaseApplicationAttachmentList = purchaseApplicationAttachmentService.selectByMainId(main.getId());
+            List<Attachments> purchaseApplicationAttachmentList = attachmentsService.selectByMainId(main.getId());
             vo.setPurchaseApplicationAttachmentList(purchaseApplicationAttachmentList);
             List<MaterialList> materialListList = materialListService.selectByMainId(main.getId());
             vo.setMaterialListList(materialListList);

+ 0 - 80
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/entity/PurchaseApplicationAttachment.java

@@ -1,80 +0,0 @@
-package org.jeecg.modules.purchaseManage.purchaseApplication.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @Description: 采购申请相关附件
- * @Author: jeecg-boot
- * @Date: 2025-04-07
- * @Version: V1.0
- */
-@ApiModel(value = "sbsmzq_purchase_application_attachment对象", description = "采购申请相关附件")
-@Data
-@TableName("sbsmzq_purchase_application_attachment")
-public class PurchaseApplicationAttachment implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @TableId(type = IdType.ASSIGN_ID)
-    @ApiModelProperty(value = "主键")
-    private String id;
-    /**
-     * 创建人
-     */
-    @ApiModelProperty(value = "创建人")
-    private String createBy;
-    /**
-     * 创建日期
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建日期")
-    private Date createTime;
-    /**
-     * 更新人
-     */
-    @ApiModelProperty(value = "更新人")
-    private String updateBy;
-    /**
-     * 更新日期
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "更新日期")
-    private Date updateTime;
-    /**
-     * 所属部门
-     */
-    @ApiModelProperty(value = "所属部门")
-    private String sysOrgCode;
-    /**
-     * 文件名称
-     */
-    @Excel(name = "文件名称", width = 15)
-    @ApiModelProperty(value = "文件名称")
-    private String fileName;
-    /**
-     * 文件地址
-     */
-    @Excel(name = "文件地址", width = 15)
-    @ApiModelProperty(value = "文件地址")
-    private String fileAddress;
-    /**
-     * 采购申请id
-     */
-    @ApiModelProperty(value = "采购申请id")
-    private String purchaseApplicationId;
-}

+ 0 - 31
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/mapper/PurchaseApplicationAttachmentMapper.java

@@ -1,31 +0,0 @@
-package org.jeecg.modules.purchaseManage.purchaseApplication.mapper;
-
-import java.util.List;
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-/**
- * @Description: 采购申请相关附件
- * @Author: jeecg-boot
- * @Date:   2025-04-07
- * @Version: V1.0
- */
-public interface PurchaseApplicationAttachmentMapper extends BaseMapper<PurchaseApplicationAttachment> {
-
-	/**
-	 * 通过主表id删除子表数据
-	 *
-	 * @param mainId 主表id
-	 * @return boolean
-	 */
-	public boolean deleteByMainId(@Param("mainId") String mainId);
-
-  /**
-   * 通过主表id查询子表数据
-   *
-   * @param mainId 主表id
-   * @return List<PurchaseApplicationAttachment>
-   */
-	public List<PurchaseApplicationAttachment> selectByMainId(@Param("mainId") String mainId);
-}

+ 0 - 16
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/mapper/xml/PurchaseApplicationAttachmentMapper.xml

@@ -1,16 +0,0 @@
-<?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="org.jeecg.modules.purchaseManage.purchaseApplication.mapper.PurchaseApplicationAttachmentMapper">
-
-	<delete id="deleteByMainId" parameterType="java.lang.String">
-		DELETE 
-		FROM  sbsmzq_purchase_application_attachment 
-		WHERE
-			 purchase_application_id = #{mainId} 	</delete>
-	
-	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment">
-		SELECT * 
-		FROM  sbsmzq_purchase_application_attachment
-		WHERE
-			 purchase_application_id = #{mainId} 	</select>
-</mapper>

+ 0 - 22
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/service/IPurchaseApplicationAttachmentService.java

@@ -1,22 +0,0 @@
-package org.jeecg.modules.purchaseManage.purchaseApplication.service;
-
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
-import com.baomidou.mybatisplus.extension.service.IService;
-import java.util.List;
-
-/**
- * @Description: 采购申请相关附件
- * @Author: jeecg-boot
- * @Date:   2025-04-07
- * @Version: V1.0
- */
-public interface IPurchaseApplicationAttachmentService extends IService<PurchaseApplicationAttachment> {
-
-	/**
-	 * 通过主表id查询子表数据
-	 *
-	 * @param mainId 主表id
-	 * @return List<PurchaseApplicationAttachment>
-	 */
-	public List<PurchaseApplicationAttachment> selectByMainId(String mainId);
-}

+ 3 - 3
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/service/IPurchaseApplicationService.java

@@ -1,9 +1,9 @@
 package org.jeecg.modules.purchaseManage.purchaseApplication.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.attachments.entity.Attachments;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.MaterialList;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplication;
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
 
 import java.io.Serializable;
 import java.util.Collection;
@@ -24,7 +24,7 @@ public interface IPurchaseApplicationService extends IService<PurchaseApplicatio
      * @param purchaseApplicationAttachmentList
      * @param materialListList
      */
-    public void saveMain(PurchaseApplication purchaseApplication, List<PurchaseApplicationAttachment> purchaseApplicationAttachmentList, List<MaterialList> materialListList);
+    public void saveMain(PurchaseApplication purchaseApplication, List<Attachments> purchaseApplicationAttachmentList, List<MaterialList> materialListList);
 
     /**
      * 修改一对多
@@ -33,7 +33,7 @@ public interface IPurchaseApplicationService extends IService<PurchaseApplicatio
      * @param purchaseApplicationAttachmentList
      * @param materialListList
      */
-    public void updateMain(PurchaseApplication purchaseApplication, List<PurchaseApplicationAttachment> purchaseApplicationAttachmentList, List<MaterialList> materialListList);
+    public void updateMain(PurchaseApplication purchaseApplication, List<Attachments> purchaseApplicationAttachmentList, List<MaterialList> materialListList);
 
     /**
      * 删除一对多

+ 0 - 27
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/service/impl/PurchaseApplicationAttachmentServiceImpl.java

@@ -1,27 +0,0 @@
-package org.jeecg.modules.purchaseManage.purchaseApplication.service.impl;
-
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
-import org.jeecg.modules.purchaseManage.purchaseApplication.mapper.PurchaseApplicationAttachmentMapper;
-import org.jeecg.modules.purchaseManage.purchaseApplication.service.IPurchaseApplicationAttachmentService;
-import org.springframework.stereotype.Service;
-import java.util.List;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * @Description: 采购申请相关附件
- * @Author: jeecg-boot
- * @Date:   2025-04-07
- * @Version: V1.0
- */
-@Service
-public class PurchaseApplicationAttachmentServiceImpl extends ServiceImpl<PurchaseApplicationAttachmentMapper, PurchaseApplicationAttachment> implements IPurchaseApplicationAttachmentService {
-	
-	@Autowired
-	private PurchaseApplicationAttachmentMapper purchaseApplicationAttachmentMapper;
-	
-	@Override
-	public List<PurchaseApplicationAttachment> selectByMainId(String mainId) {
-		return purchaseApplicationAttachmentMapper.selectByMainId(mainId);
-	}
-}

+ 11 - 14
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/service/impl/PurchaseApplicationServiceImpl.java

@@ -1,11 +1,11 @@
 package org.jeecg.modules.purchaseManage.purchaseApplication.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.mapper.AttachmentsMapper;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.MaterialList;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplication;
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
 import org.jeecg.modules.purchaseManage.purchaseApplication.mapper.MaterialListMapper;
-import org.jeecg.modules.purchaseManage.purchaseApplication.mapper.PurchaseApplicationAttachmentMapper;
 import org.jeecg.modules.purchaseManage.purchaseApplication.mapper.PurchaseApplicationMapper;
 import org.jeecg.modules.purchaseManage.purchaseApplication.service.IPurchaseApplicationService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,19 +28,19 @@ public class PurchaseApplicationServiceImpl extends ServiceImpl<PurchaseApplicat
     @Autowired
     private PurchaseApplicationMapper purchaseApplicationMapper;
     @Autowired
-    private PurchaseApplicationAttachmentMapper purchaseApplicationAttachmentMapper;
+    private AttachmentsMapper attachmentsMapper;
     @Autowired
     private MaterialListMapper materialListMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveMain(PurchaseApplication purchaseApplication, List<PurchaseApplicationAttachment> purchaseApplicationAttachmentList, List<MaterialList> materialListList) {
+    public void saveMain(PurchaseApplication purchaseApplication, List<Attachments> purchaseApplicationAttachmentList, List<MaterialList> materialListList) {
         purchaseApplicationMapper.insert(purchaseApplication);
         if (purchaseApplicationAttachmentList != null && purchaseApplicationAttachmentList.size() > 0) {
-            for (PurchaseApplicationAttachment entity : purchaseApplicationAttachmentList) {
+            for (Attachments entity : purchaseApplicationAttachmentList) {
                 //外键设置
-                entity.setPurchaseApplicationId(purchaseApplication.getId());
-                purchaseApplicationAttachmentMapper.insert(entity);
+                entity.setExtId(purchaseApplication.getId());
+                attachmentsMapper.insert(entity);
             }
         }
         if (materialListList != null && materialListList.size() > 0) {
@@ -54,19 +54,18 @@ public class PurchaseApplicationServiceImpl extends ServiceImpl<PurchaseApplicat
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateMain(PurchaseApplication purchaseApplication, List<PurchaseApplicationAttachment> purchaseApplicationAttachmentList, List<MaterialList> materialListList) {
+    public void updateMain(PurchaseApplication purchaseApplication, List<Attachments> purchaseApplicationAttachmentList, List<MaterialList> materialListList) {
         purchaseApplicationMapper.updateById(purchaseApplication);
 
         //1.先删除子表数据
-        purchaseApplicationAttachmentMapper.deleteByMainId(purchaseApplication.getId());
         materialListMapper.deleteByMainId(purchaseApplication.getId());
 
         //2.子表数据重新插入
         if (purchaseApplicationAttachmentList != null && purchaseApplicationAttachmentList.size() > 0) {
-            for (PurchaseApplicationAttachment entity : purchaseApplicationAttachmentList) {
+            for (Attachments entity : purchaseApplicationAttachmentList) {
                 //外键设置
-                entity.setPurchaseApplicationId(purchaseApplication.getId());
-                purchaseApplicationAttachmentMapper.insert(entity);
+                entity.setExtId(purchaseApplication.getId());
+                attachmentsMapper.insert(entity);
             }
         }
         if (materialListList != null && materialListList.size() > 0) {
@@ -81,7 +80,6 @@ public class PurchaseApplicationServiceImpl extends ServiceImpl<PurchaseApplicat
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void delMain(String id) {
-        purchaseApplicationAttachmentMapper.deleteByMainId(id);
         materialListMapper.deleteByMainId(id);
         purchaseApplicationMapper.deleteById(id);
     }
@@ -90,7 +88,6 @@ public class PurchaseApplicationServiceImpl extends ServiceImpl<PurchaseApplicat
     @Transactional(rollbackFor = Exception.class)
     public void delBatchMain(Collection<? extends Serializable> idList) {
         for (Serializable id : idList) {
-            purchaseApplicationAttachmentMapper.deleteByMainId(id.toString());
             materialListMapper.deleteByMainId(id.toString());
             purchaseApplicationMapper.deleteById(id);
         }

+ 6 - 2
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseApplication/vo/PurchaseApplicationPage.java

@@ -4,8 +4,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.jeecg.modules.attachments.entity.Attachments;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.MaterialList;
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.jeecgframework.poi.excel.annotation.ExcelCollection;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -134,9 +134,13 @@ public class PurchaseApplicationPage {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @Excel(name = "采购计划id", width = 15)
+    @ApiModelProperty(value = "采购计划id")
+    private String purchasePlanId;
+
     @ExcelCollection(name = "采购申请相关附件")
     @ApiModelProperty(value = "采购申请相关附件")
-    private List<PurchaseApplicationAttachment> purchaseApplicationAttachmentList;
+    private List<Attachments> purchaseApplicationAttachmentList;
     @ExcelCollection(name = "采购物料清单")
     @ApiModelProperty(value = "采购物料清单")
     private List<MaterialList> materialListList;

+ 6 - 6
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchaseDetails/controller/PurchaseDetailsController.java

@@ -11,11 +11,11 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.service.IAttachmentsService;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.MaterialList;
 import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplication;
-import org.jeecg.modules.purchaseManage.purchaseApplication.entity.PurchaseApplicationAttachment;
 import org.jeecg.modules.purchaseManage.purchaseApplication.service.IMaterialListService;
-import org.jeecg.modules.purchaseManage.purchaseApplication.service.IPurchaseApplicationAttachmentService;
 import org.jeecg.modules.purchaseManage.purchaseApplication.service.IPurchaseApplicationService;
 import org.jeecg.modules.purchaseManage.purchaseDetails.entity.PurchaseDetails;
 import org.jeecg.modules.purchaseManage.purchaseDetails.service.IPurchaseDetailsService;
@@ -44,9 +44,9 @@ public class PurchaseDetailsController extends JeecgController<PurchaseDetails,
     @Autowired
     private IPurchaseApplicationService purchaseApplicationService;
     @Autowired
-    private IPurchaseApplicationAttachmentService purchaseApplicationAttachmentService;
-    @Autowired
     private IMaterialListService materialListService;
+    @Autowired
+    private IAttachmentsService attachmentsService;
 
     /**
      * 分页列表查询
@@ -202,13 +202,13 @@ public class PurchaseDetailsController extends JeecgController<PurchaseDetails,
      */
     @ApiOperation(value = "采购申请相关附件主表requestNo查询", notes = "采购申请相关附件-通主表requestNo查询")
     @GetMapping(value = "/queryPurchaseApplicationAttachmentByRequestNo")
-    public Result<List<PurchaseApplicationAttachment>> queryPurchaseApplicationAttachmentByRequestNo(@RequestParam(name = "requestNo", required = true) String requestNo) {
+    public Result<List<Attachments>> queryPurchaseApplicationAttachmentByRequestNo(@RequestParam(name = "requestNo", required = true) String requestNo) {
 
         PurchaseApplication selectByRequestNo = purchaseApplicationService.selectByRequestNo(requestNo);
         if (selectByRequestNo == null) {
             return Result.error("未根据申请单号找到对应采购申请数据");
         }
-        List<PurchaseApplicationAttachment> purchaseApplicationAttachmentList = purchaseApplicationAttachmentService.selectByMainId(selectByRequestNo.getId());
+        List<Attachments> purchaseApplicationAttachmentList = attachmentsService.selectByMainId(selectByRequestNo.getId());
         return Result.OK(purchaseApplicationAttachmentList);
     }
 

+ 6 - 6
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/controller/PurchasePlanController.java

@@ -17,10 +17,10 @@ import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.RedisUtil;
 import org.jeecg.common.util.TokenUtils;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchaseAttachments;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.service.IAttachmentsService;
 import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlan;
 import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlanInfo;
-import org.jeecg.modules.purchaseManage.purchasePlan.service.IPurchaseAttachmentsService;
 import org.jeecg.modules.purchaseManage.purchasePlan.service.IPurchasePlanInfoService;
 import org.jeecg.modules.purchaseManage.purchasePlan.service.IPurchasePlanService;
 import org.jeecg.modules.purchaseManage.purchasePlan.vo.PurchasePlanPage;
@@ -70,7 +70,7 @@ public class PurchasePlanController {
     @Autowired
     private IPurchasePlanService purchasePlanService;
     @Autowired
-    private IPurchaseAttachmentsService purchaseAttachmentsService;
+    private IAttachmentsService attachmentsService;
     @Autowired
     private IPurchasePlanInfoService purchasePlanInfoService;
 
@@ -191,8 +191,8 @@ public class PurchasePlanController {
     //@AutoLog(value = "采购计划相关附件通过主表ID查询")
     @ApiOperation(value = "采购计划相关附件主表ID查询", notes = "采购计划相关附件-通主表ID查询")
     @GetMapping(value = "/queryPurchaseAttachmentsByMainId")
-    public Result<List<PurchaseAttachments>> queryPurchaseAttachmentsListByMainId(@RequestParam(name = "id", required = true) String id) {
-        List<PurchaseAttachments> purchaseAttachmentsList = purchaseAttachmentsService.selectByMainId(id);
+    public Result<List<Attachments>> queryPurchaseAttachmentsListByMainId(@RequestParam(name = "id", required = true) String id) {
+        List<Attachments> purchaseAttachmentsList = attachmentsService.selectByMainId(id);
         return Result.OK(purchaseAttachmentsList);
     }
 
@@ -237,7 +237,7 @@ public class PurchasePlanController {
         for (PurchasePlan main : purchasePlanList) {
             PurchasePlanPage vo = new PurchasePlanPage();
             BeanUtils.copyProperties(main, vo);
-            List<PurchaseAttachments> purchaseAttachmentsList = purchaseAttachmentsService.selectByMainId(main.getId());
+            List<Attachments> purchaseAttachmentsList = attachmentsService.selectByMainId(main.getId());
             vo.setPurchaseAttachmentsList(purchaseAttachmentsList);
             List<PurchasePlanInfo> purchasePlanInfoList = purchasePlanInfoService.selectByMainId(main.getId());
             vo.setPurchasePlanInfoList(purchasePlanInfoList);

+ 0 - 16
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/mapper/xml/PurchaseAttachmentsMapper.xml

@@ -1,16 +0,0 @@
-<?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="org.jeecg.modules.purchaseManage.purchasePlan.mapper.PurchaseAttachmentsMapper">
-
-	<delete id="deleteByMainId" parameterType="java.lang.String">
-		DELETE 
-		FROM  sbsmzq_purchase_attachments 
-		WHERE
-			 purchase_plan_id = #{mainId} 	</delete>
-	
-	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchaseAttachments">
-		SELECT * 
-		FROM  sbsmzq_purchase_attachments
-		WHERE
-			 purchase_plan_id = #{mainId} 	</select>
-</mapper>

+ 0 - 22
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/service/IPurchaseAttachmentsService.java

@@ -1,22 +0,0 @@
-package org.jeecg.modules.purchaseManage.purchasePlan.service;
-
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchaseAttachments;
-import com.baomidou.mybatisplus.extension.service.IService;
-import java.util.List;
-
-/**
- * @Description: 采购计划相关附件
- * @Author: jeecg-boot
- * @Date:   2025-04-07
- * @Version: V1.0
- */
-public interface IPurchaseAttachmentsService extends IService<PurchaseAttachments> {
-
-	/**
-	 * 通过主表id查询子表数据
-	 *
-	 * @param mainId 主表id
-	 * @return List<PurchaseAttachments>
-	 */
-	public List<PurchaseAttachments> selectByMainId(String mainId);
-}

+ 37 - 36
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/service/IPurchasePlanService.java

@@ -1,9 +1,10 @@
 package org.jeecg.modules.purchaseManage.purchasePlan.service;
 
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchaseAttachments;
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlanInfo;
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlan;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlan;
+import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlanInfo;
+
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.List;
@@ -11,41 +12,41 @@ import java.util.List;
 /**
  * @Description: 采购计划
  * @Author: jeecg-boot
- * @Date:   2025-04-07
+ * @Date: 2025-04-07
  * @Version: V1.0
  */
 public interface IPurchasePlanService extends IService<PurchasePlan> {
 
-	/**
-	 * 添加一对多
-	 *
-	 * @param purchasePlan
-	 * @param purchaseAttachmentsList
-	 * @param purchasePlanInfoList
-	 */
-	public void saveMain(PurchasePlan purchasePlan,List<PurchaseAttachments> purchaseAttachmentsList,List<PurchasePlanInfo> purchasePlanInfoList) ;
-	
-	/**
-	 * 修改一对多
-	 *
-   * @param purchasePlan
-   * @param purchaseAttachmentsList
-   * @param purchasePlanInfoList
-	 */
-	public void updateMain(PurchasePlan purchasePlan,List<PurchaseAttachments> purchaseAttachmentsList,List<PurchasePlanInfo> purchasePlanInfoList);
-	
-	/**
-	 * 删除一对多
-	 *
-	 * @param id
-	 */
-	public void delMain (String id);
-	
-	/**
-	 * 批量删除一对多
-	 *
-	 * @param idList
-	 */
-	public void delBatchMain (Collection<? extends Serializable> idList);
-	
+    /**
+     * 添加一对多
+     *
+     * @param purchasePlan
+     * @param purchaseAttachmentsList
+     * @param purchasePlanInfoList
+     */
+    public void saveMain(PurchasePlan purchasePlan, List<Attachments> purchaseAttachmentsList, List<PurchasePlanInfo> purchasePlanInfoList);
+
+    /**
+     * 修改一对多
+     *
+     * @param purchasePlan
+     * @param purchaseAttachmentsList
+     * @param purchasePlanInfoList
+     */
+    public void updateMain(PurchasePlan purchasePlan, List<Attachments> purchaseAttachmentsList, List<PurchasePlanInfo> purchasePlanInfoList);
+
+    /**
+     * 删除一对多
+     *
+     * @param id
+     */
+    public void delMain(String id);
+
+    /**
+     * 批量删除一对多
+     *
+     * @param idList
+     */
+    public void delBatchMain(Collection<? extends Serializable> idList);
+
 }

+ 0 - 27
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/service/impl/PurchaseAttachmentsServiceImpl.java

@@ -1,27 +0,0 @@
-package org.jeecg.modules.purchaseManage.purchasePlan.service.impl;
-
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchaseAttachments;
-import org.jeecg.modules.purchaseManage.purchasePlan.mapper.PurchaseAttachmentsMapper;
-import org.jeecg.modules.purchaseManage.purchasePlan.service.IPurchaseAttachmentsService;
-import org.springframework.stereotype.Service;
-import java.util.List;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * @Description: 采购计划相关附件
- * @Author: jeecg-boot
- * @Date:   2025-04-07
- * @Version: V1.0
- */
-@Service
-public class PurchaseAttachmentsServiceImpl extends ServiceImpl<PurchaseAttachmentsMapper, PurchaseAttachments> implements IPurchaseAttachmentsService {
-	
-	@Autowired
-	private PurchaseAttachmentsMapper purchaseAttachmentsMapper;
-	
-	@Override
-	public List<PurchaseAttachments> selectByMainId(String mainId) {
-		return purchaseAttachmentsMapper.selectByMainId(mainId);
-	}
-}

+ 72 - 74
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/service/impl/PurchasePlanServiceImpl.java

@@ -1,98 +1,96 @@
 package org.jeecg.modules.purchaseManage.purchasePlan.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.attachments.entity.Attachments;
+import org.jeecg.modules.attachments.mapper.AttachmentsMapper;
 import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlan;
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchaseAttachments;
 import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlanInfo;
-import org.jeecg.modules.purchaseManage.purchasePlan.mapper.PurchaseAttachmentsMapper;
 import org.jeecg.modules.purchaseManage.purchasePlan.mapper.PurchasePlanInfoMapper;
 import org.jeecg.modules.purchaseManage.purchasePlan.mapper.PurchasePlanMapper;
 import org.jeecg.modules.purchaseManage.purchasePlan.service.IPurchasePlanService;
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import java.io.Serializable;
-import java.util.List;
 import java.util.Collection;
+import java.util.List;
 
 /**
  * @Description: 采购计划
  * @Author: jeecg-boot
- * @Date:   2025-04-07
+ * @Date: 2025-04-07
  * @Version: V1.0
  */
 @Service
 public class PurchasePlanServiceImpl extends ServiceImpl<PurchasePlanMapper, PurchasePlan> implements IPurchasePlanService {
 
-	@Autowired
-	private PurchasePlanMapper purchasePlanMapper;
-	@Autowired
-	private PurchaseAttachmentsMapper purchaseAttachmentsMapper;
-	@Autowired
-	private PurchasePlanInfoMapper purchasePlanInfoMapper;
-	
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void saveMain(PurchasePlan purchasePlan, List<PurchaseAttachments> purchaseAttachmentsList,List<PurchasePlanInfo> purchasePlanInfoList) {
-		purchasePlanMapper.insert(purchasePlan);
-		if(purchaseAttachmentsList!=null && purchaseAttachmentsList.size()>0) {
-			for(PurchaseAttachments entity:purchaseAttachmentsList) {
-				//外键设置
-				entity.setPurchasePlanId(purchasePlan.getId());
-				purchaseAttachmentsMapper.insert(entity);
-			}
-		}
-		if(purchasePlanInfoList!=null && purchasePlanInfoList.size()>0) {
-			for(PurchasePlanInfo entity:purchasePlanInfoList) {
-				//外键设置
-				entity.setPurchasePlanId(purchasePlan.getId());
-				purchasePlanInfoMapper.insert(entity);
-			}
-		}
-	}
+    @Autowired
+    private PurchasePlanMapper purchasePlanMapper;
+    @Autowired
+    private AttachmentsMapper attachmentsMapper;
+    @Autowired
+    private PurchasePlanInfoMapper purchasePlanInfoMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveMain(PurchasePlan purchasePlan, List<Attachments> purchaseAttachmentsList, List<PurchasePlanInfo> purchasePlanInfoList) {
+        purchasePlanMapper.insert(purchasePlan);
+        if (purchaseAttachmentsList != null && purchaseAttachmentsList.size() > 0) {
+            for (Attachments entity : purchaseAttachmentsList) {
+                //外键设置
+                entity.setExtId(purchasePlan.getId());
+                attachmentsMapper.insert(entity);
+            }
+        }
+        if (purchasePlanInfoList != null && purchasePlanInfoList.size() > 0) {
+            for (PurchasePlanInfo entity : purchasePlanInfoList) {
+                //外键设置
+                entity.setPurchasePlanId(purchasePlan.getId());
+                purchasePlanInfoMapper.insert(entity);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMain(PurchasePlan purchasePlan, List<Attachments> purchaseAttachmentsList, List<PurchasePlanInfo> purchasePlanInfoList) {
+        purchasePlanMapper.updateById(purchasePlan);
+
+        //1.先删除子表数据
+        purchasePlanInfoMapper.deleteByMainId(purchasePlan.getId());
+
+        //2.子表数据重新插入
+        if (purchaseAttachmentsList != null && purchaseAttachmentsList.size() > 0) {
+            for (Attachments entity : purchaseAttachmentsList) {
+                //外键设置
+                entity.setExtId(purchasePlan.getId());
+                attachmentsMapper.insert(entity);
+            }
+        }
+        if (purchasePlanInfoList != null && purchasePlanInfoList.size() > 0) {
+            for (PurchasePlanInfo entity : purchasePlanInfoList) {
+                //外键设置
+                entity.setPurchasePlanId(purchasePlan.getId());
+                purchasePlanInfoMapper.insert(entity);
+            }
+        }
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateMain(PurchasePlan purchasePlan,List<PurchaseAttachments> purchaseAttachmentsList,List<PurchasePlanInfo> purchasePlanInfoList) {
-		purchasePlanMapper.updateById(purchasePlan);
-		
-		//1.先删除子表数据
-		purchaseAttachmentsMapper.deleteByMainId(purchasePlan.getId());
-		purchasePlanInfoMapper.deleteByMainId(purchasePlan.getId());
-		
-		//2.子表数据重新插入
-		if(purchaseAttachmentsList!=null && purchaseAttachmentsList.size()>0) {
-			for(PurchaseAttachments entity:purchaseAttachmentsList) {
-				//外键设置
-				entity.setPurchasePlanId(purchasePlan.getId());
-				purchaseAttachmentsMapper.insert(entity);
-			}
-		}
-		if(purchasePlanInfoList!=null && purchasePlanInfoList.size()>0) {
-			for(PurchasePlanInfo entity:purchasePlanInfoList) {
-				//外键设置
-				entity.setPurchasePlanId(purchasePlan.getId());
-				purchasePlanInfoMapper.insert(entity);
-			}
-		}
-	}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delMain(String id) {
+        purchasePlanInfoMapper.deleteByMainId(id);
+        purchasePlanMapper.deleteById(id);
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void delMain(String id) {
-		purchaseAttachmentsMapper.deleteByMainId(id);
-		purchasePlanInfoMapper.deleteByMainId(id);
-		purchasePlanMapper.deleteById(id);
-	}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delBatchMain(Collection<? extends Serializable> idList) {
+        for (Serializable id : idList) {
+            purchasePlanInfoMapper.deleteByMainId(id.toString());
+            purchasePlanMapper.deleteById(id);
+        }
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void delBatchMain(Collection<? extends Serializable> idList) {
-		for(Serializable id:idList) {
-			purchaseAttachmentsMapper.deleteByMainId(id.toString());
-			purchasePlanInfoMapper.deleteByMainId(id.toString());
-			purchasePlanMapper.deleteById(id);
-		}
-	}
-	
 }

+ 2 - 2
zgzt-sbsmzq/jeecg-module-lifecycle/src/main/java/org/jeecg/modules/purchaseManage/purchasePlan/vo/PurchasePlanPage.java

@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchaseAttachments;
+import org.jeecg.modules.attachments.entity.Attachments;
 import org.jeecg.modules.purchaseManage.purchasePlan.entity.PurchasePlanInfo;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.jeecgframework.poi.excel.annotation.ExcelCollection;
@@ -137,7 +137,7 @@ public class PurchasePlanPage {
 
     @ExcelCollection(name = "采购计划相关附件")
     @ApiModelProperty(value = "采购计划相关附件")
-    private List<PurchaseAttachments> purchaseAttachmentsList;
+    private List<Attachments> purchaseAttachmentsList;
     @ExcelCollection(name = "采购计划信息")
     @ApiModelProperty(value = "采购计划信息")
     private List<PurchasePlanInfo> purchasePlanInfoList;