From a473018c48d2a72af9c9b216baff7a4d386f72cf Mon Sep 17 00:00:00 2001 From: HashMap Date: Wed, 6 Aug 2025 18:11:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(module):=20=E7=89=A9=E8=B5=84=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加物资管理 实现Excel批量导入 --- .../WzMaterialsManagementController.java | 42 ++++++---- .../stock/controller/WzStockInController.java | 4 +- .../mapper/WzMaterialsManagementMapper.java | 8 ++ .../IWzMaterialsManagementService.java | 10 +++ .../stock/service/IWzStockInService.java | 3 +- .../WzMaterialsManagementServiceImpl.java | 78 ++++++++++++++----- .../stock/WzMaterialsManagementMapper.xml | 6 +- 7 files changed, 108 insertions(+), 43 deletions(-) diff --git a/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzMaterialsManagementController.java b/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzMaterialsManagementController.java index db687da..e1b567e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzMaterialsManagementController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzMaterialsManagementController.java @@ -2,6 +2,7 @@ package com.zhyc.module.stock.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; + import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -19,17 +20,17 @@ import com.zhyc.module.stock.domain.WzMaterialsManagement; import com.zhyc.module.stock.service.IWzMaterialsManagementService; import com.zhyc.common.utils.poi.ExcelUtil; import com.zhyc.common.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; /** * 物资管理Controller - * + * * @author HashMap * @date 2025-08-05 */ @RestController @RequestMapping("/stock/management") -public class WzMaterialsManagementController extends BaseController -{ +public class WzMaterialsManagementController extends BaseController { private final IWzMaterialsManagementService wzMaterialsManagementService; public WzMaterialsManagementController(IWzMaterialsManagementService wzMaterialsManagementService) { @@ -41,8 +42,7 @@ public class WzMaterialsManagementController extends BaseController */ @PreAuthorize("@ss.hasPermi('stock:management:list')") @GetMapping("/list") - public TableDataInfo list(WzMaterialsManagement wzMaterialsManagement) - { + public TableDataInfo list(WzMaterialsManagement wzMaterialsManagement) { startPage(); List list = wzMaterialsManagementService.selectWzMaterialsManagementList(wzMaterialsManagement); return getDataTable(list); @@ -54,8 +54,7 @@ public class WzMaterialsManagementController extends BaseController @PreAuthorize("@ss.hasPermi('stock:management:export')") @Log(title = "物资管理", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, WzMaterialsManagement wzMaterialsManagement) - { + public void export(HttpServletResponse response, WzMaterialsManagement wzMaterialsManagement) { List list = wzMaterialsManagementService.selectWzMaterialsManagementList(wzMaterialsManagement); ExcelUtil util = new ExcelUtil<>(WzMaterialsManagement.class); util.exportExcel(response, list, "物资管理数据"); @@ -66,8 +65,7 @@ public class WzMaterialsManagementController extends BaseController */ @PreAuthorize("@ss.hasPermi('stock:management:query')") @GetMapping(value = "/{materialManagementCode}") - public AjaxResult getInfo(@PathVariable("materialManagementCode") Long materialManagementCode) - { + public AjaxResult getInfo(@PathVariable("materialManagementCode") Long materialManagementCode) { return success(wzMaterialsManagementService.selectWzMaterialsManagementByMaterialManagementCode(materialManagementCode)); } @@ -77,8 +75,7 @@ public class WzMaterialsManagementController extends BaseController @PreAuthorize("@ss.hasPermi('stock:management:add')") @Log(title = "物资管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody WzMaterialsManagement wzMaterialsManagement) - { + public AjaxResult add(@RequestBody WzMaterialsManagement wzMaterialsManagement) { return toAjax(wzMaterialsManagementService.insertWzMaterialsManagement(wzMaterialsManagement)); } @@ -88,8 +85,7 @@ public class WzMaterialsManagementController extends BaseController @PreAuthorize("@ss.hasPermi('stock:management:edit')") @Log(title = "物资管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody WzMaterialsManagement wzMaterialsManagement) - { + public AjaxResult edit(@RequestBody WzMaterialsManagement wzMaterialsManagement) { return toAjax(wzMaterialsManagementService.updateWzMaterialsManagement(wzMaterialsManagement)); } @@ -98,9 +94,23 @@ public class WzMaterialsManagementController extends BaseController */ @PreAuthorize("@ss.hasPermi('stock:management:remove')") @Log(title = "物资管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{materialManagementCodes}") - public AjaxResult remove(@PathVariable Long[] materialManagementCodes) - { + @DeleteMapping("/{materialManagementCodes}") + public AjaxResult remove(@PathVariable Long[] materialManagementCodes) { return toAjax(wzMaterialsManagementService.deleteWzMaterialsManagementByMaterialManagementCodes(materialManagementCodes)); } + + @Log(title = "物资管理", businessType = BusinessType.IMPORT) + @PreAuthorize("@ss.hasPermi('stock:management:import')") + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { + ExcelUtil util = new ExcelUtil<>(WzMaterialsManagement.class); + List stockInList = util.importExcel(file.getInputStream()); + for (WzMaterialsManagement wzMaterialsManagement : stockInList) { + System.out.println(wzMaterialsManagement); + } + String operName = getUsername(); + String message = wzMaterialsManagementService.importUser(stockInList, updateSupport, operName); + // String message = "OK We are testing"; + return success(message); + } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzStockInController.java b/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzStockInController.java index b14aa86..6705202 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzStockInController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/stock/controller/WzStockInController.java @@ -3,8 +3,6 @@ package com.zhyc.module.stock.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; -import com.zhyc.common.core.domain.entity.SysUser; -import com.zhyc.module.stock.service.impl.WzStockInServiceImpl; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -113,7 +111,7 @@ public class WzStockInController extends BaseController @PostMapping("/importData") public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { - ExcelUtil util = new ExcelUtil(WzStockIn.class); + ExcelUtil util = new ExcelUtil<>(WzStockIn.class); List stockInList = util.importExcel(file.getInputStream()); stockInList.removeIf(wzStockIn -> wzStockIn.getDocDate() == null); String operName = getUsername(); diff --git a/zhyc-module/src/main/java/com/zhyc/module/stock/mapper/WzMaterialsManagementMapper.java b/zhyc-module/src/main/java/com/zhyc/module/stock/mapper/WzMaterialsManagementMapper.java index 26bc020..a1c75a9 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/stock/mapper/WzMaterialsManagementMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/stock/mapper/WzMaterialsManagementMapper.java @@ -60,4 +60,12 @@ public interface WzMaterialsManagementMapper * @return 结果 */ int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes); + + /** + * 以物资编码获取记录 + * + * @param materialID 物资编码 + * @return 结果 + */ + WzMaterialsManagement selectWzMaterialsManagementByMaterialID(String materialID); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/stock/service/IWzMaterialsManagementService.java b/zhyc-module/src/main/java/com/zhyc/module/stock/service/IWzMaterialsManagementService.java index c41114f..46e71dc 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/stock/service/IWzMaterialsManagementService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/stock/service/IWzMaterialsManagementService.java @@ -58,4 +58,14 @@ public interface IWzMaterialsManagementService * @return 结果 */ int deleteWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode); + + /** + * 导入入库数据 + * + * @param MaterialsManagementList 物资数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * @return 结果 + */ + String importUser(List MaterialsManagementList, Boolean isUpdateSupport, String operName); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/stock/service/IWzStockInService.java b/zhyc-module/src/main/java/com/zhyc/module/stock/service/IWzStockInService.java index 1db71f9..8d986a0 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/stock/service/IWzStockInService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/stock/service/IWzStockInService.java @@ -2,7 +2,6 @@ package com.zhyc.module.stock.service; import java.util.List; -import com.zhyc.common.core.domain.entity.SysUser; import com.zhyc.module.stock.domain.WzStockIn; /** @@ -69,5 +68,5 @@ public interface IWzStockInService * @param operName 操作用户 * @return 结果 */ - public String importUser(List StockInList, Boolean isUpdateSupport, String operName); + String importUser(List StockInList, Boolean isUpdateSupport, String operName); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/stock/service/impl/WzMaterialsManagementServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/stock/service/impl/WzMaterialsManagementServiceImpl.java index e04415f..ab6d272 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/stock/service/impl/WzMaterialsManagementServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/stock/service/impl/WzMaterialsManagementServiceImpl.java @@ -2,20 +2,22 @@ package com.zhyc.module.stock.service.impl; import java.util.List; +import com.zhyc.common.exception.ServiceException; +import com.zhyc.common.utils.StringUtils; import org.springframework.stereotype.Service; import com.zhyc.module.stock.mapper.WzMaterialsManagementMapper; import com.zhyc.module.stock.domain.WzMaterialsManagement; import com.zhyc.module.stock.service.IWzMaterialsManagementService; +import org.springframework.transaction.annotation.Transactional; /** * 物资管理Service业务层处理 - * + * * @author HashMap * @date 2025-08-05 */ @Service -public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementService -{ +public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementService { private final WzMaterialsManagementMapper wzMaterialsManagementMapper; public WzMaterialsManagementServiceImpl(WzMaterialsManagementMapper wzMaterialsManagementMapper) { @@ -24,73 +26,107 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS /** * 查询物资管理 - * + * * @param materialManagementCode 物资管理主键 * @return 物资管理 */ @Override - public WzMaterialsManagement selectWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) - { + public WzMaterialsManagement selectWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) { return wzMaterialsManagementMapper.selectWzMaterialsManagementByMaterialManagementCode(materialManagementCode); } /** * 查询物资管理列表 - * + * * @param wzMaterialsManagement 物资管理 * @return 物资管理 */ @Override - public List selectWzMaterialsManagementList(WzMaterialsManagement wzMaterialsManagement) - { + public List selectWzMaterialsManagementList(WzMaterialsManagement wzMaterialsManagement) { return wzMaterialsManagementMapper.selectWzMaterialsManagementList(wzMaterialsManagement); } /** * 新增物资管理 - * + * * @param wzMaterialsManagement 物资管理 * @return 结果 */ @Override - public int insertWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) - { + public int insertWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) { return wzMaterialsManagementMapper.insertWzMaterialsManagement(wzMaterialsManagement); } /** * 修改物资管理 - * + * * @param wzMaterialsManagement 物资管理 * @return 结果 */ @Override - public int updateWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) - { + public int updateWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) { return wzMaterialsManagementMapper.updateWzMaterialsManagement(wzMaterialsManagement); } /** * 批量删除物资管理 - * + * * @param materialManagementCodes 需要删除的物资管理主键 * @return 结果 */ @Override - public int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes) - { + public int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes) { return wzMaterialsManagementMapper.deleteWzMaterialsManagementByMaterialManagementCodes(materialManagementCodes); } /** * 删除物资管理信息 - * + * * @param materialManagementCode 物资管理主键 * @return 结果 */ @Override - public int deleteWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) - { + public int deleteWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) { return wzMaterialsManagementMapper.deleteWzMaterialsManagementByMaterialManagementCode(materialManagementCode); } + + /** + * 导入用户数据 + * + * @param MaterialsManagementList 物资数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public String importUser(List MaterialsManagementList, Boolean isUpdateSupport, String operName) { + if (StringUtils.isNull(MaterialsManagementList) || MaterialsManagementList.isEmpty()) { + throw new ServiceException("导入用户数据不能为空!"); + } + int successNum = 0; + int sameNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + try { + for (WzMaterialsManagement wzMaterialsManagement : MaterialsManagementList) { + if (wzMaterialsManagement.getMaterialId() != null) { + WzMaterialsManagement isExist = wzMaterialsManagementMapper.selectWzMaterialsManagementByMaterialID(wzMaterialsManagement.getMaterialId()); + // 存在则更新 + if (isExist != null) { + sameNum++; + wzMaterialsManagementMapper.updateWzMaterialsManagement(wzMaterialsManagement); + continue; + } + } + int result = wzMaterialsManagementMapper.insertWzMaterialsManagement(wzMaterialsManagement); + if (result > 0) successNum++; + } + } catch (Exception e) { + return failureMsg.append("导入出错:").append(e.getMessage()).toString(); + } + successMsg.append("导入完成 : 导入 ").append(successNum).append(" 条\n更新 ").append(sameNum).append(" 条(已存在记录)"); + return successMsg.toString(); + } + } diff --git a/zhyc-module/src/main/resources/mapper/stock/WzMaterialsManagementMapper.xml b/zhyc-module/src/main/resources/mapper/stock/WzMaterialsManagementMapper.xml index f555332..d2347c4 100644 --- a/zhyc-module/src/main/resources/mapper/stock/WzMaterialsManagementMapper.xml +++ b/zhyc-module/src/main/resources/mapper/stock/WzMaterialsManagementMapper.xml @@ -77,7 +77,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" expiration_date = #{expirationDate}, expiration_alarm = #{expirationAlarm}, - where material_management_code = #{materialManagementCode} + where material_id = #{materialId} @@ -90,4 +90,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{materialManagementCode} + + \ No newline at end of file