Browse Source

物品基本信息 导入代码

master
chenfang 2 years ago
parent
commit
b0664b1df5
  1. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java
  2. 49
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportExcelVo.java
  3. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportRespVO.java
  4. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java
  5. 32
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java

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

@ -25,6 +25,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -137,10 +138,11 @@ public class ItembasicController {
public void importTemplate(HttpServletResponse response) throws IOException { public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo // 手动创建导出 demo
List<ItembasicImportExcelVo> list = Arrays.asList( List<ItembasicImportExcelVo> list = Arrays.asList(
ItembasicImportExcelVo.builder().code("aaaa").status("ENABLE").uom("EA").isStdPack("TURE").enableBuy("TURE").enableMake("TURE").enableOutsourcing("TURE") ItembasicImportExcelVo.builder().code("code").name("name").desc1("描述1").desc2("描述2").status("ENABLE").uom("EA").altUom("EA")
.isRecycled("TURE").isPhantom("TURE").abcClass("A").type("RAW").validityDays(1).available("TRUE").build(), .isStdPack("TRUE'").enableBuy("TRUE").enableMake("TRUE").enableOutsourcing("TRUE")
ItembasicImportExcelVo.builder().code("bbbb").status("DISABLE").uom("EA").isStdPack("FASLE").enableBuy("FASLE").enableMake("FASLE").enableOutsourcing("FASLE") .isRecycled("TRUE").isPhantom("TRUE").abcClass("A").type("OTS").category("DEFAULT").itemGroup("DEFAULT")
.isRecycled("FASLE").isPhantom("FASLE").abcClass("Z").type("RAW").validityDays(1).available("FASLE").build() .color("DEFAULT").configuration("DEFAULT").project("项目").eqLevel("DEFAULT").validityDays(1).available("TRUE")
.activeTime(LocalDateTime.now()).expireTime(LocalDateTime.now()).remark("备注").build()
); );
// 输出 // 输出
ExcelUtils.write(response, "用户导入模板.xls", "用户列表", ItembasicImportExcelVo.class, list); ExcelUtils.write(response, "用户导入模板.xls", "用户列表", ItembasicImportExcelVo.class, list);
@ -155,11 +157,13 @@ public class ItembasicController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
}) })
@PreAuthorize("@ss.hasPermission('wms:itembasic:import')") @PreAuthorize("@ss.hasPermission('wms:itembasic:import')")
public CommonResult<ItembasicImportRespVO> importExcel(@RequestParam("file") MultipartFile file, public void importExcel(HttpServletResponse response,
@RequestParam(value = "mode") Integer mode, @RequestParam("file") MultipartFile file,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) 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); List<ItembasicImportExcelVo> list = ExcelUtils.read(file, ItembasicImportExcelVo.class);
return success(itembasicService.importUserList(list, mode,updatePart)); List<ItembasicImportExcelVo> errorList = itembasicService.importUserList(list, mode, updatePart);
ExcelUtils.write(response, "用户导入错误数据.xls", "错误列表", ItembasicImportExcelVo.class, errorList);
} }
} }

49
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportExcelVo.java

@ -1,6 +1,7 @@
package com.win.module.wms.controller.itembasic.vo; package com.win.module.wms.controller.itembasic.vo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert; import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
@ -10,6 +11,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Data @Data
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@ -20,6 +23,15 @@ public class ItembasicImportExcelVo {
@ExcelProperty("代码") @ExcelProperty("代码")
private String code; private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述1")
private String desc1;
@ExcelProperty("描述2")
private String desc2;
@ExcelProperty(value = "状态", converter = DictConvert.class) @ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_STATUS) @DictFormat(DictTypeConstants.ITEM_STATUS)
private String status; private String status;
@ -28,6 +40,10 @@ public class ItembasicImportExcelVo {
@DictFormat(DictTypeConstants.UOM) @DictFormat(DictTypeConstants.UOM)
private String uom; private String uom;
@ExcelProperty(value = "替代计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String altUom;
@ExcelProperty(value = "是否标包", converter = DictConvert.class) @ExcelProperty(value = "是否标包", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE) @DictFormat(DictTypeConstants.TRUE_FALSE)
private String isStdPack; private String isStdPack;
@ -59,6 +75,30 @@ public class ItembasicImportExcelVo {
@ExcelProperty(value = "类型", converter = DictConvert.class) @ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_TYPE) @DictFormat(DictTypeConstants.ITEM_TYPE)
private String type; private String type;
@ExcelProperty(value = "种类", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_CATEGORY)
private String category;
@ExcelProperty(value = "分组", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_GROUP)
private String itemGroup;
@ExcelProperty(value = "颜色", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_COLOR)
private String color;
@ExcelProperty(value = "配置", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_CONFIGURATION)
private String configuration;
@ExcelProperty(value = "项目")
private String project;
@ExcelProperty(value = "质量等级", converter = DictConvert.class)
@DictFormat(DictTypeConstants.EQ_LEVEL)
private String eqLevel;
@ExcelProperty(value = "有效天数") @ExcelProperty(value = "有效天数")
private Integer validityDays; private Integer validityDays;
@ -66,5 +106,14 @@ public class ItembasicImportExcelVo {
@DictFormat(DictTypeConstants.TRUE_FALSE) @DictFormat(DictTypeConstants.TRUE_FALSE)
private String available; private String available;
@ExcelProperty(value = "生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty(value = "失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty(value = "备注")
private String remark;
} }

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

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

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 是否支持更新 * @param isUpdateSupport 是否支持更新
* @return 导入结果 * @return 导入结果
*/ */
ItembasicImportRespVO importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode,boolean updatePart); List<ItembasicImportExcelVo> importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode,boolean updatePart);
} }

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

@ -47,7 +47,7 @@ public class ItembasicServiceImpl implements ItembasicService {
public void updateItembasic(ItembasicUpdateReqVO updateReqVO) { public void updateItembasic(ItembasicUpdateReqVO updateReqVO) {
// 校验存在 // 校验存在
validateItembasicExists(updateReqVO.getId()); validateItembasicExists(updateReqVO.getId());
// codeExists(updateReqVO.getCode()); codeExists(null,updateReqVO.getCode());
statusExists(updateReqVO.getStatus()); statusExists(updateReqVO.getStatus());
uomExists(updateReqVO.getUom()); uomExists(updateReqVO.getUom());
isStdPackExists(updateReqVO.getIsStdPack()); isStdPackExists(updateReqVO.getIsStdPack());
@ -191,47 +191,37 @@ public class ItembasicServiceImpl implements ItembasicService {
return itembasicMapper.selectList(exportReqVO); return itembasicMapper.selectList(exportReqVO);
} }
public ItembasicImportRespVO importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode, boolean updatePart) { public List<ItembasicImportExcelVo> importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(importItembasics)) { if (CollUtil.isEmpty(importItembasics)) {
throw exception(USER_IMPORT_LIST_IS_EMPTY); throw exception(USER_IMPORT_LIST_IS_EMPTY);
} }
ItembasicImportRespVO respVO = ItembasicImportRespVO.builder().createItembasics(new ArrayList<>()) List<ItembasicImportExcelVo> errorList = new ArrayList<>();
.updateItembasics(new ArrayList<>()).failureItembasics(new LinkedHashMap<>()).build(); importItembasics.forEach(importItembasic -> {
importItembasics.forEach(itembasic -> {
// 校验,判断是否有不符合的原因 // 校验,判断是否有不符合的原因
try { try {
if(mode == 2){ if(mode == 2){
validateUserForCreateOrUpdate(null,itembasic.getCode()); validateUserForCreateOrUpdate(null,importItembasic.getCode());
} }
} catch (ServiceException ex) { } catch (ServiceException ex) {
respVO.getFailureItembasics().put(itembasic.getCode(), ex.getMessage()); errorList.add(importItembasic);
return; return;
} }
// 判断如果不存在,在进行插入 // 判断如果不存在,在进行插入
ItembasicDO existItembasic = itembasicMapper.selectByCode(itembasic.getCode()); ItembasicDO existItembasic = itembasicMapper.selectByCode(importItembasic.getCode());
if (existItembasic == null&& mode != 3) { if (existItembasic == null&& mode != 3) {
itembasicMapper.insert(ItembasicConvert.INSTANCE.convert(itembasic)); itembasicMapper.insert(ItembasicConvert.INSTANCE.convert(importItembasic));
respVO.getCreateItembasics().add(itembasic.getCode());
} }
else if (existItembasic != null && mode != 2) {// 如果存在,判断是否允许更新 else if (existItembasic != null && mode != 2) {// 如果存在,判断是否允许更新
ItembasicDO itembasicDO = ItembasicConvert.INSTANCE.convert(itembasic); ItembasicDO itembasicDO = ItembasicConvert.INSTANCE.convert(importItembasic);
itembasicDO.setId(existItembasic.getId()); itembasicDO.setId(existItembasic.getId());
itembasicMapper.updateById(itembasicDO); itembasicMapper.updateById(itembasicDO);
respVO.getUpdateItembasics().add(itembasic.getCode());
} }
}); });
//错误不为空并非部分更新,手工回滚 //错误不为空并非部分更新,手工回滚
if(respVO.getUpdateItembasics().isEmpty() && !updatePart) { if(!errorList.isEmpty() && !updatePart) {
respVO.setUpdateItembasics(new ArrayList<>());
respVO.setCreateItembasics(new ArrayList<>());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} }
List<String> importResult = new ArrayList<>(); return errorList;
importResult.add("createItembasics");
importResult.add("updateItembasics");
importResult.add("failureItembasics");
respVO.setImportResult(importResult);
return respVO;
} }
private void validateUserForCreateOrUpdate(Long id,String code) { private void validateUserForCreateOrUpdate(Long id,String code) {

Loading…
Cancel
Save