Browse Source

物品基础信息 导入功能代码

master
chenfang 2 years ago
parent
commit
154d8783a2
  1. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java
  2. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportRespVO.java
  3. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java
  4. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java
  5. 77
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java
  6. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationService.java
  7. 28
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java

@ -137,14 +137,11 @@ public class ItembasicController {
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<ItembasicImportExcelVo> list = Arrays.asList(
ItembasicImportExcelVo.builder().code("yunai").uom("1").isStdPack("1").enableBuy("1")
.enableMake("1").status("1").enableOutsourcing("1")
.isRecycled("1").isPhantom("1").abcClass("1").type("1").validityDays(1).available("1").build(),
ItembasicImportExcelVo.builder().code("yuanma").uom("2").isStdPack("2").enableBuy("2")
.enableMake("2").status("2").enableOutsourcing("2")
.isRecycled("2").isPhantom("2").abcClass("2").type("2").validityDays(1).available("2").build()
ItembasicImportExcelVo.builder().code("aaaa").status("ENABLE").uom("EA").isStdPack("TURE").enableBuy("TURE").enableMake("TURE").enableOutsourcing("TURE")
.isRecycled("TURE").isPhantom("TURE").abcClass("A").type("RAW").validityDays(1).available("TRUE").build(),
ItembasicImportExcelVo.builder().code("bbbb").status("DISABLE").uom("EA").isStdPack("FASLE").enableBuy("FASLE").enableMake("FASLE").enableOutsourcing("FASLE")
.isRecycled("FASLE").isPhantom("FASLE").abcClass("Z").type("RAW").validityDays(1).available("FASLE").build()
);
// 输出
ExcelUtils.write(response, "用户导入模板.xls", "用户列表", ItembasicImportExcelVo.class, list);
}
@ -154,13 +151,15 @@ public class ItembasicController {
@Operation(summary = "导入用户")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:itembasic:import')")
public CommonResult<ItembasicImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<ItembasicImportExcelVo> list = ExcelUtils.read(file, ItembasicImportExcelVo.class);
return success(itembasicService.importUserList(list, updateSupport));
return success(itembasicService.importUserList(list, mode,updatePart));
}
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportRespVO.java

@ -21,4 +21,7 @@ public class ItembasicImportRespVO {
@Schema(description = "导入失败的用户集合,key 为用户名,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED)
private Map<String, String> failureItembasics;
//这个map改成实体类
private List<String> importResult;
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java

@ -115,12 +115,14 @@ public class WorkstationController {
@Operation(summary = "导入用户")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:workstation:import')")
public CommonResult<WorkstationImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<WorkstationImportExcelVo> list = ExcelUtils.read(file, WorkstationImportExcelVo.class);
return success(workstationService.importUserList(list, updateSupport));
return success(workstationService.importUserList(list, mode,updatePart));
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java

@ -76,6 +76,6 @@ public interface ItembasicService {
* @param isUpdateSupport 是否支持更新
* @return 导入结果
*/
ItembasicImportRespVO importUserList(List<ItembasicImportExcelVo> importItembasics, boolean isUpdateSupport);
ItembasicImportRespVO importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode,boolean updatePart);
}

77
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java

@ -1,6 +1,7 @@
package com.win.module.wms.service.itembasic;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
@ -9,20 +10,17 @@ import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.mysql.itembasic.ItembasicMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.*;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY;
import static com.win.module.system.enums.ErrorCodeConstants.USER_USERNAME_EXISTS;
import static com.win.module.wms.enums.itembasic.ErrorCodeConstants.ITEMBASIC_NOT_EXISTS;
import static com.win.module.wms.enums.itembasic.ErrorCodeConstants.ITEMBASIC_NOT_RIGHT;
import static com.win.module.wms.enums.workstation.ErrorCodeConstants.CODE_EXISTS;
/**
* 物品基本信息 Service 实现类
@ -49,7 +47,7 @@ public class ItembasicServiceImpl implements ItembasicService {
public void updateItembasic(ItembasicUpdateReqVO updateReqVO) {
// 校验存在
validateItembasicExists(updateReqVO.getId());
codeExists(updateReqVO.getCode());
// codeExists(updateReqVO.getCode());
statusExists(updateReqVO.getStatus());
uomExists(updateReqVO.getUom());
isStdPackExists(updateReqVO.getIsStdPack());
@ -81,10 +79,24 @@ public class ItembasicServiceImpl implements ItembasicService {
}
}
private void codeExists(String code) {
private void codeExists(Long id,String code) {
if (code.isEmpty()) {
throw exception(ITEMBASIC_NOT_RIGHT);
}
if (StrUtil.isBlank(code)) {
return;
}
ItembasicDO itembasic = itembasicMapper.selectByCode(code);
if (itembasic == null) {
return;
}
// 如果 id 为空,说明不用比较是否为相同 id 的用户
if (id == null) {
throw exception(CODE_EXISTS);
}
if (!itembasic.getId().equals(id)) {
throw exception(CODE_EXISTS);
}
}
private void statusExists(String status) {
@ -179,47 +191,54 @@ public class ItembasicServiceImpl implements ItembasicService {
return itembasicMapper.selectList(exportReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public ItembasicImportRespVO importUserList(List<ItembasicImportExcelVo> importItembasics, boolean isUpdateSupport) {
public ItembasicImportRespVO importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(importItembasics)) {
throw exception(USER_IMPORT_LIST_IS_EMPTY);
}
ItembasicImportRespVO respVO = ItembasicImportRespVO.builder().createItembasics(new ArrayList<>())
.updateItembasics(new ArrayList<>()).failureItembasics(new LinkedHashMap<>()).build();
importItembasics.forEach(importItembasic -> {
importItembasics.forEach(itembasic -> {
// 校验,判断是否有不符合的原因
try {
validateUserForCreateOrUpdate(importItembasic.getCode());
if(mode == 2){
validateUserForCreateOrUpdate(null,itembasic.getCode());
}
} catch (ServiceException ex) {
respVO.getFailureItembasics().put(importItembasic.getCode(), ex.getMessage());
respVO.getFailureItembasics().put(itembasic.getCode(), ex.getMessage());
return;
}
// 判断如果不存在,在进行插入
ItembasicDO existItembasic = itembasicMapper.selectByCode(importItembasic.getCode());
if (existItembasic == null) {
itembasicMapper.insert(ItembasicConvert.INSTANCE.convert(importItembasic)); // 设置默认密码及空岗位编号数组
respVO.getCreateItembasics().add(importItembasic.getCode());
return;
ItembasicDO existItembasic = itembasicMapper.selectByCode(itembasic.getCode());
if (existItembasic == null&& mode != 3) {
itembasicMapper.insert(ItembasicConvert.INSTANCE.convert(itembasic));
respVO.getCreateItembasics().add(itembasic.getCode());
}
// 如果存在,判断是否允许更新
if (!isUpdateSupport) {
respVO.getFailureItembasics().put(importItembasic.getCode(), USER_USERNAME_EXISTS.getMsg());
return;
else if (existItembasic != null && mode != 2) {// 如果存在,判断是否允许更新
ItembasicDO itembasicDO = ItembasicConvert.INSTANCE.convert(itembasic);
itembasicDO.setId(existItembasic.getId());
itembasicMapper.updateById(itembasicDO);
respVO.getUpdateItembasics().add(itembasic.getCode());
}
ItembasicDO updateUser = ItembasicConvert.INSTANCE.convert(importItembasic);
updateUser.setId(existItembasic.getId());
itembasicMapper.updateById(updateUser);
respVO.getUpdateItembasics().add(importItembasic.getCode());
});
//错误不为空并非部分更新,手工回滚
if(respVO.getUpdateItembasics().isEmpty() && !updatePart) {
respVO.setUpdateItembasics(new ArrayList<>());
respVO.setCreateItembasics(new ArrayList<>());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
List<String> importResult = new ArrayList<>();
importResult.add("createItembasics");
importResult.add("updateItembasics");
importResult.add("failureItembasics");
respVO.setImportResult(importResult);
return respVO;
}
private void validateUserForCreateOrUpdate(String code) {
private void validateUserForCreateOrUpdate(Long id,String code) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> {
// 校验code唯一
codeExists(code);
codeExists(id,code);
});
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationService.java

@ -69,5 +69,5 @@ public interface WorkstationService {
*/
List<WorkstationDO> getWorkstationList(WorkstationExportReqVO exportReqVO);
WorkstationImportRespVO importUserList(List<WorkstationImportExcelVo> list, Boolean isUpdateSupport);
WorkstationImportRespVO importUserList(List<WorkstationImportExcelVo> list, Integer mode,Boolean updatePart);
}

28
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java

@ -11,6 +11,7 @@ import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.dal.mysql.workstation.WorkstationMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -90,7 +91,7 @@ public class WorkstationServiceImpl implements WorkstationService {
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public WorkstationImportRespVO importUserList(List<WorkstationImportExcelVo> workstations, Boolean isUpdateSupport) {
public WorkstationImportRespVO importUserList(List<WorkstationImportExcelVo> workstations, Integer mode,Boolean updatePart) {
if (CollUtil.isEmpty(workstations)) {
throw exception(USER_IMPORT_LIST_IS_EMPTY);
}
@ -106,22 +107,23 @@ public class WorkstationServiceImpl implements WorkstationService {
}
// 判断如果不存在,在进行插入
WorkstationDO existWorkstation = workstationMapper.selectByCode(workstation.getCode());
if (existWorkstation == null) {
if (existWorkstation == null&& mode != 3) {
workstationMapper.insert(WorkstationConvert.INSTANCE.convert(workstation));
respVO.getCreateWorkstations().add(workstation.getCode());
return;
}
// 如果存在,判断是否允许更新
// if (!isUpdateSupport) {
// String put = respVO.getFailureWorkstations().put(workstation.getCode(), USER_USERNAME_EXISTS.getMsg());
// System.out.println(put);
// return;
// }
WorkstationDO updateUser = WorkstationConvert.INSTANCE.convert(workstation);
updateUser.setId(existWorkstation.getId());
workstationMapper.updateById(updateUser);
respVO.getUpdateWorkstations().add(workstation.getCode());
else if (existWorkstation != null && mode != 2) {// 如果存在,判断是否允许更新
WorkstationDO workstationDO = WorkstationConvert.INSTANCE.convert(workstation);
workstationDO.setId(existWorkstation.getId());
workstationMapper.updateById(workstationDO);
respVO.getUpdateWorkstations().add(workstation.getCode());
}
});
//错误不为空并非部分更新,手工回滚
if(respVO.getUpdateWorkstations().isEmpty() && !updatePart) {
respVO.setUpdateWorkstations(new ArrayList<>());
respVO.setCreateWorkstations(new ArrayList<>());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return respVO;
}

Loading…
Cancel
Save