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 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,6 +20,7 @@ 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
@ -28,8 +30,7 @@ import com.zhyc.common.core.page.TableDataInfo;
*/
@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<WzMaterialsManagement> 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<WzMaterialsManagement> list = wzMaterialsManagementService.selectWzMaterialsManagementList(wzMaterialsManagement);
ExcelUtil<WzMaterialsManagement> 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<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 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<WzStockIn> util = new ExcelUtil<WzStockIn>(WzStockIn.class);
ExcelUtil<WzStockIn> util = new ExcelUtil<>(WzStockIn.class);
List<WzStockIn> stockInList = util.importExcel(file.getInputStream());
stockInList.removeIf(wzStockIn -> wzStockIn.getDocDate() == null);
String operName = getUsername();

View File

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

View File

@ -58,4 +58,14 @@ public interface IWzMaterialsManagementService
* @return 结果
*/
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 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<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 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业务层处理
@ -14,8 +17,7 @@ import com.zhyc.module.stock.service.IWzMaterialsManagementService;
* @date 2025-08-05
*/
@Service
public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementService
{
public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementService {
private final WzMaterialsManagementMapper wzMaterialsManagementMapper;
public WzMaterialsManagementServiceImpl(WzMaterialsManagementMapper wzMaterialsManagementMapper) {
@ -29,8 +31,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 物资管理
*/
@Override
public WzMaterialsManagement selectWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode)
{
public WzMaterialsManagement selectWzMaterialsManagementByMaterialManagementCode(Long materialManagementCode) {
return wzMaterialsManagementMapper.selectWzMaterialsManagementByMaterialManagementCode(materialManagementCode);
}
@ -41,8 +42,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 物资管理
*/
@Override
public List<WzMaterialsManagement> selectWzMaterialsManagementList(WzMaterialsManagement wzMaterialsManagement)
{
public List<WzMaterialsManagement> selectWzMaterialsManagementList(WzMaterialsManagement wzMaterialsManagement) {
return wzMaterialsManagementMapper.selectWzMaterialsManagementList(wzMaterialsManagement);
}
@ -53,8 +53,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 结果
*/
@Override
public int insertWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement)
{
public int insertWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) {
return wzMaterialsManagementMapper.insertWzMaterialsManagement(wzMaterialsManagement);
}
@ -65,8 +64,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 结果
*/
@Override
public int updateWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement)
{
public int updateWzMaterialsManagement(WzMaterialsManagement wzMaterialsManagement) {
return wzMaterialsManagementMapper.updateWzMaterialsManagement(wzMaterialsManagement);
}
@ -77,8 +75,7 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @return 结果
*/
@Override
public int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes)
{
public int deleteWzMaterialsManagementByMaterialManagementCodes(Long[] materialManagementCodes) {
return wzMaterialsManagementMapper.deleteWzMaterialsManagementByMaterialManagementCodes(materialManagementCodes);
}
@ -89,8 +86,47 @@ public class WzMaterialsManagementServiceImpl implements IWzMaterialsManagementS
* @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<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="expirationAlarm != null">expiration_alarm = #{expirationAlarm},</if>
</trim>
where material_management_code = #{materialManagementCode}
where material_id = #{materialId}
</update>
<delete id="deleteWzMaterialsManagementByMaterialManagementCode" parameterType="Long">
@ -90,4 +90,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{materialManagementCode}
</foreach>
</delete>
<select id="selectWzMaterialsManagementByMaterialID" parameterType="String" resultMap="WzMaterialsManagementResult">
SELECT * FROM wz_materials_management WHERE material_id = #{materialID}
</select>
</mapper>