feat(module): 物资管理

添加物资管理
实现Excel批量导入
This commit is contained in:
HashMap 2025-08-06 18:11:35 +08:00
parent 6fb4762af9
commit a473018c48
7 changed files with 108 additions and 43 deletions

View File

@ -2,6 +2,7 @@ package com.zhyc.module.stock.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -19,6 +20,7 @@ import com.zhyc.module.stock.domain.WzMaterialsManagement;
import com.zhyc.module.stock.service.IWzMaterialsManagementService; import com.zhyc.module.stock.service.IWzMaterialsManagementService;
import com.zhyc.common.utils.poi.ExcelUtil; import com.zhyc.common.utils.poi.ExcelUtil;
import com.zhyc.common.core.page.TableDataInfo; import com.zhyc.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 物资管理Controller * 物资管理Controller
@ -28,8 +30,7 @@ import com.zhyc.common.core.page.TableDataInfo;
*/ */
@RestController @RestController
@RequestMapping("/stock/management") @RequestMapping("/stock/management")
public class WzMaterialsManagementController extends BaseController public class WzMaterialsManagementController extends BaseController {
{
private final IWzMaterialsManagementService wzMaterialsManagementService; private final IWzMaterialsManagementService wzMaterialsManagementService;
public WzMaterialsManagementController(IWzMaterialsManagementService wzMaterialsManagementService) { public WzMaterialsManagementController(IWzMaterialsManagementService wzMaterialsManagementService) {
@ -41,8 +42,7 @@ public class WzMaterialsManagementController extends BaseController
*/ */
@PreAuthorize("@ss.hasPermi('stock:management:list')") @PreAuthorize("@ss.hasPermi('stock:management:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(WzMaterialsManagement wzMaterialsManagement) public TableDataInfo list(WzMaterialsManagement wzMaterialsManagement) {
{
startPage(); startPage();
List<WzMaterialsManagement> list = wzMaterialsManagementService.selectWzMaterialsManagementList(wzMaterialsManagement); List<WzMaterialsManagement> list = wzMaterialsManagementService.selectWzMaterialsManagementList(wzMaterialsManagement);
return getDataTable(list); return getDataTable(list);
@ -54,8 +54,7 @@ public class WzMaterialsManagementController extends BaseController
@PreAuthorize("@ss.hasPermi('stock:management:export')") @PreAuthorize("@ss.hasPermi('stock:management:export')")
@Log(title = "物资管理", businessType = BusinessType.EXPORT) @Log(title = "物资管理", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, WzMaterialsManagement wzMaterialsManagement) public void export(HttpServletResponse response, WzMaterialsManagement wzMaterialsManagement) {
{
List<WzMaterialsManagement> list = wzMaterialsManagementService.selectWzMaterialsManagementList(wzMaterialsManagement); List<WzMaterialsManagement> list = wzMaterialsManagementService.selectWzMaterialsManagementList(wzMaterialsManagement);
ExcelUtil<WzMaterialsManagement> util = new ExcelUtil<>(WzMaterialsManagement.class); ExcelUtil<WzMaterialsManagement> util = new ExcelUtil<>(WzMaterialsManagement.class);
util.exportExcel(response, list, "物资管理数据"); util.exportExcel(response, list, "物资管理数据");
@ -66,8 +65,7 @@ public class WzMaterialsManagementController extends BaseController
*/ */
@PreAuthorize("@ss.hasPermi('stock:management:query')") @PreAuthorize("@ss.hasPermi('stock:management:query')")
@GetMapping(value = "/{materialManagementCode}") @GetMapping(value = "/{materialManagementCode}")
public AjaxResult getInfo(@PathVariable("materialManagementCode") Long materialManagementCode) public AjaxResult getInfo(@PathVariable("materialManagementCode") Long materialManagementCode) {
{
return success(wzMaterialsManagementService.selectWzMaterialsManagementByMaterialManagementCode(materialManagementCode)); return success(wzMaterialsManagementService.selectWzMaterialsManagementByMaterialManagementCode(materialManagementCode));
} }
@ -77,8 +75,7 @@ public class WzMaterialsManagementController extends BaseController
@PreAuthorize("@ss.hasPermi('stock:management:add')") @PreAuthorize("@ss.hasPermi('stock:management:add')")
@Log(title = "物资管理", businessType = BusinessType.INSERT) @Log(title = "物资管理", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody WzMaterialsManagement wzMaterialsManagement) public AjaxResult add(@RequestBody WzMaterialsManagement wzMaterialsManagement) {
{
return toAjax(wzMaterialsManagementService.insertWzMaterialsManagement(wzMaterialsManagement)); return toAjax(wzMaterialsManagementService.insertWzMaterialsManagement(wzMaterialsManagement));
} }
@ -88,8 +85,7 @@ public class WzMaterialsManagementController extends BaseController
@PreAuthorize("@ss.hasPermi('stock:management:edit')") @PreAuthorize("@ss.hasPermi('stock:management:edit')")
@Log(title = "物资管理", businessType = BusinessType.UPDATE) @Log(title = "物资管理", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody WzMaterialsManagement wzMaterialsManagement) public AjaxResult edit(@RequestBody WzMaterialsManagement wzMaterialsManagement) {
{
return toAjax(wzMaterialsManagementService.updateWzMaterialsManagement(wzMaterialsManagement)); return toAjax(wzMaterialsManagementService.updateWzMaterialsManagement(wzMaterialsManagement));
} }
@ -98,9 +94,23 @@ public class WzMaterialsManagementController extends BaseController
*/ */
@PreAuthorize("@ss.hasPermi('stock:management:remove')") @PreAuthorize("@ss.hasPermi('stock:management:remove')")
@Log(title = "物资管理", businessType = BusinessType.DELETE) @Log(title = "物资管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{materialManagementCodes}") @DeleteMapping("/{materialManagementCodes}")
public AjaxResult remove(@PathVariable Long[] materialManagementCodes) public AjaxResult remove(@PathVariable Long[] materialManagementCodes) {
{
return toAjax(wzMaterialsManagementService.deleteWzMaterialsManagementByMaterialManagementCodes(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<WzMaterialsManagement> util = new ExcelUtil<>(WzMaterialsManagement.class);
List<WzMaterialsManagement> 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);
}
} }

View File

@ -3,8 +3,6 @@ package com.zhyc.module.stock.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; 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.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -113,7 +111,7 @@ public class WzStockInController extends BaseController
@PostMapping("/importData") @PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{ {
ExcelUtil<WzStockIn> util = new ExcelUtil<WzStockIn>(WzStockIn.class); ExcelUtil<WzStockIn> util = new ExcelUtil<>(WzStockIn.class);
List<WzStockIn> stockInList = util.importExcel(file.getInputStream()); List<WzStockIn> stockInList = util.importExcel(file.getInputStream());
stockInList.removeIf(wzStockIn -> wzStockIn.getDocDate() == null); stockInList.removeIf(wzStockIn -> wzStockIn.getDocDate() == null);
String operName = getUsername(); String operName = getUsername();

View File

@ -60,4 +60,12 @@ public interface WzMaterialsManagementMapper
* @return 结果 * @return 结果
*/ */
int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes); int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes);
/**
* 以物资编码获取记录
*
* @param materialID 物资编码
* @return 结果
*/
WzMaterialsManagement selectWzMaterialsManagementByMaterialID(String materialID);
} }

View File

@ -58,4 +58,14 @@ public interface IWzMaterialsManagementService
* @return 结果 * @return 结果
*/ */
int deleteWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode); int deleteWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode);
/**
* 导入入库数据
*
* @param MaterialsManagementList 物资数据列表
* @param isUpdateSupport 是否更新支持如果已存在则进行更新数据
* @param operName 操作用户
* @return 结果
*/
String importUser(List<WzMaterialsManagement> MaterialsManagementList, Boolean isUpdateSupport, String operName);
} }

View File

@ -2,7 +2,6 @@ package com.zhyc.module.stock.service;
import java.util.List; import java.util.List;
import com.zhyc.common.core.domain.entity.SysUser;
import com.zhyc.module.stock.domain.WzStockIn; import com.zhyc.module.stock.domain.WzStockIn;
/** /**
@ -69,5 +68,5 @@ public interface IWzStockInService
* @param operName 操作用户 * @param operName 操作用户
* @return 结果 * @return 结果
*/ */
public String importUser(List<WzStockIn> StockInList, Boolean isUpdateSupport, String operName); String importUser(List<WzStockIn> StockInList, Boolean isUpdateSupport, String operName);
} }

View File

@ -2,10 +2,13 @@ package com.zhyc.module.stock.service.impl;
import java.util.List; import java.util.List;
import com.zhyc.common.exception.ServiceException;
import com.zhyc.common.utils.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.zhyc.module.stock.mapper.WzMaterialsManagementMapper; import com.zhyc.module.stock.mapper.WzMaterialsManagementMapper;
import com.zhyc.module.stock.domain.WzMaterialsManagement; import com.zhyc.module.stock.domain.WzMaterialsManagement;
import com.zhyc.module.stock.service.IWzMaterialsManagementService; import com.zhyc.module.stock.service.IWzMaterialsManagementService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 物资管理Service业务层处理 * 物资管理Service业务层处理
@ -14,8 +17,7 @@ import com.zhyc.module.stock.service.IWzMaterialsManagementService;
* @date 2025-08-05 * @date 2025-08-05
*/ */
@Service @Service
public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementService public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementService {
{
private final WzMaterialsManagementMapper wzMaterialsManagementMapper; private final WzMaterialsManagementMapper wzMaterialsManagementMapper;
public WzMaterialsManagementServiceImpl(WzMaterialsManagementMapper wzMaterialsManagementMapper) { public WzMaterialsManagementServiceImpl(WzMaterialsManagementMapper wzMaterialsManagementMapper) {
@ -29,8 +31,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 物资管理 * @return 物资管理
*/ */
@Override @Override
public WzMaterialsManagement selectWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) public WzMaterialsManagement selectWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) {
{
return wzMaterialsManagementMapper.selectWzMaterialsManagementByMaterialManagementCode(materialManagementCode); return wzMaterialsManagementMapper.selectWzMaterialsManagementByMaterialManagementCode(materialManagementCode);
} }
@ -41,8 +42,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 物资管理 * @return 物资管理
*/ */
@Override @Override
public List<WzMaterialsManagement> selectWzMaterialsManagementList(WzMaterialsManagement wzMaterialsManagement) public List<WzMaterialsManagement> selectWzMaterialsManagementList(WzMaterialsManagement wzMaterialsManagement) {
{
return wzMaterialsManagementMapper.selectWzMaterialsManagementList(wzMaterialsManagement); return wzMaterialsManagementMapper.selectWzMaterialsManagementList(wzMaterialsManagement);
} }
@ -53,8 +53,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) public int insertWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) {
{
return wzMaterialsManagementMapper.insertWzMaterialsManagement(wzMaterialsManagement); return wzMaterialsManagementMapper.insertWzMaterialsManagement(wzMaterialsManagement);
} }
@ -65,8 +64,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 结果 * @return 结果
*/ */
@Override @Override
public int updateWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) public int updateWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) {
{
return wzMaterialsManagementMapper.updateWzMaterialsManagement(wzMaterialsManagement); return wzMaterialsManagementMapper.updateWzMaterialsManagement(wzMaterialsManagement);
} }
@ -77,8 +75,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes) public int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes) {
{
return wzMaterialsManagementMapper.deleteWzMaterialsManagementByMaterialManagementCodes(materialManagementCodes); return wzMaterialsManagementMapper.deleteWzMaterialsManagementByMaterialManagementCodes(materialManagementCodes);
} }
@ -89,8 +86,47 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) public int deleteWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) {
{
return wzMaterialsManagementMapper.deleteWzMaterialsManagementByMaterialManagementCode(materialManagementCode); return wzMaterialsManagementMapper.deleteWzMaterialsManagementByMaterialManagementCode(materialManagementCode);
} }
/**
* 导入用户数据
*
* @param MaterialsManagementList 物资数据列表
* @param isUpdateSupport 是否更新支持如果已存在则进行更新数据
* @param operName 操作用户
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String importUser(List<WzMaterialsManagement> 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();
}
} }

View File

@ -77,7 +77,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="expirationDate != null">expiration_date = #{expirationDate},</if> <if test="expirationDate != null">expiration_date = #{expirationDate},</if>
<if test="expirationAlarm != null">expiration_alarm = #{expirationAlarm},</if> <if test="expirationAlarm != null">expiration_alarm = #{expirationAlarm},</if>
</trim> </trim>
where material_management_code = #{materialManagementCode} where material_id = #{materialId}
</update> </update>
<delete id="deleteWzMaterialsManagementByMaterialManagementCode" parameterType="Long"> <delete id="deleteWzMaterialsManagementByMaterialManagementCode" parameterType="Long">
@ -90,4 +90,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{materialManagementCode} #{materialManagementCode}
</foreach> </foreach>
</delete> </delete>
<select id="selectWzMaterialsManagementByMaterialID" parameterType="String" resultMap="WzMaterialsManagementResult">
SELECT * FROM wz_materials_management WHERE material_id = #{materialID}
</select>
</mapper> </mapper>