Browse Source

代码修改到倒数第4个

master
廉洪喜 2 years ago
parent
commit
490d48915d
  1. 20
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/transactiontype/ErrorCodeConstants.java
  2. 5
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/warehouse/ErrorCodeConstants.java
  3. 6
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/workshop/ErrorCodeConstants.java
  4. 7
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/workstation/ErrorCodeConstants.java
  5. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java
  6. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/vo/AccountcalendarImportExcelVo.java
  7. 49
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transactiontype/TransactiontypeController.java
  8. 63
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transactiontype/vo/TransactiontypeImportExcelVo.java
  9. 53
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/WarehouseController.java
  10. 58
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/vo/WarehouseImportExcelVo.java
  11. 44
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/WorkshopController.java
  12. 54
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/vo/WorkshopImportExcelVo.java
  13. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transactiontype/TransactiontypeConvert.java
  14. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/warehouse/WarehouseConvert.java
  15. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workshop/WorkshopConvert.java
  16. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transactiontype/TransactiontypeMapper.java
  17. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/warehouse/WarehouseMapper.java
  18. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/workshop/WorkshopMapper.java
  19. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transactiontype/TransactiontypeService.java
  20. 103
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transactiontype/TransactiontypeServiceImpl.java
  21. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseService.java
  22. 108
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java
  23. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopService.java
  24. 107
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java

20
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/transactiontype/ErrorCodeConstants.java

@ -0,0 +1,20 @@
package com.win.module.wms.enums.transactiontype;
import com.win.framework.common.exception.ErrorCode;
/**
* System 错误码枚举类
*
* system 系统使用 1-002-000-000
*/
public interface ErrorCodeConstants {
ErrorCode NOT_EXISTS = new ErrorCode(1_0_000_000, "仓库不存在");
ErrorCode TRANSACTIONTYPE_CODE_EXISTS = new ErrorCode(1_0_000_001, "code已存在");
ErrorCode CODE_EXISTSNO = new ErrorCode(1_039_000_002, "code已存在");
ErrorCode TRANSACTIONTYPE_AVAIABLE_NOT_EXISTS = new ErrorCode(1_040_000_003, "是否可用不存在");
}

5
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/warehouse/ErrorCodeConstants.java

@ -11,4 +11,9 @@ public interface ErrorCodeConstants {
ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_033_000_000, "仓库不存在"); ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_033_000_000, "仓库不存在");
ErrorCode WAREHOUSE_CODE_EXISTS = new ErrorCode(1_033_000_001, "code已存在");
ErrorCode WAREHOUSE_CODE_EXISTSNO = new ErrorCode(1_033_000_002, "code不存在");
ErrorCode WAREHOUSE_AVAIABLE_NOT_EXISTS = new ErrorCode(1_033_000_003, "是否可用不存在");
} }

6
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/workshop/ErrorCodeConstants.java

@ -11,4 +11,10 @@ public interface ErrorCodeConstants {
ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_038_000_000, "车间不存在"); ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_038_000_000, "车间不存在");
ErrorCode CODE_EXISTS = new ErrorCode(1_039_000_000, "code已存在");
ErrorCode CODE_EXISTSNO = new ErrorCode(1_039_000_000, "code已存在");
ErrorCode AVAIABLE_NOT_EXISTS = new ErrorCode(1_040_000_000, "是否可用不存在");
} }

7
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/workstation/ErrorCodeConstants.java

@ -11,8 +11,11 @@ public interface ErrorCodeConstants {
ErrorCode WORKSTATION_NOT_EXISTS = new ErrorCode(1_040_000_000, "工位不存在"); ErrorCode WORKSTATION_NOT_EXISTS = new ErrorCode(1_040_000_000, "工位不存在");
ErrorCode CODE_NOT_EXISTS = new ErrorCode(1_040_000_001, "code不存在"); ErrorCode WORKSTATION_CODE_NOT_EXISTS = new ErrorCode(1_040_000_001, "code不存在");
ErrorCode WORKSTATION_CODE_EXISTS = new ErrorCode(1_040_000_002, "code已存在");
ErrorCode WORKSTATION_AVAIABLE_NOT_EXISTS = new ErrorCode(1_040_000_003, "是否可用不存在");
ErrorCode CODE_EXISTS = new ErrorCode(1_040_000_002, "code已存在");
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java

@ -102,7 +102,7 @@ public class AccountcalendarController {
} }
@GetMapping("/get-import-template") @GetMapping("/get-import-template")
@Operation(summary = "获得导入账期日历板") @Operation(summary = "获得导入账期日历板")
public void importTemplate(HttpServletResponse response) throws IOException { public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo // 手动创建导出 demo
List<AccountcalendarImportExcelVo> list = Arrays.asList( List<AccountcalendarImportExcelVo> list = Arrays.asList(

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/vo/AccountcalendarImportExcelVo.java

@ -21,8 +21,7 @@ import java.time.LocalDateTime;
public class AccountcalendarImportExcelVo { public class AccountcalendarImportExcelVo {
@ExcelProperty("年") @ExcelProperty("年")
private String year; private String code;
@ExcelProperty("月") @ExcelProperty("月")
private String month; private String month;

49
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transactiontype/TransactiontypeController.java

@ -1,6 +1,9 @@
package com.win.module.wms.controller.transactiontype; package com.win.module.wms.controller.transactiontype;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.wms.controller.transactiontype.vo.*; import com.win.module.wms.controller.transactiontype.vo.*;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.Parameters;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -11,6 +14,8 @@ import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*; import javax.validation.*;
import javax.servlet.http.*; import javax.servlet.http.*;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*; import java.util.*;
import java.io.IOException; import java.io.IOException;
@ -23,10 +28,10 @@ import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.framework.operatelog.core.annotations.OperateLog;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.win.module.wms.controller.transactiontype.vo.*;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.convert.transactiontype.TransactiontypeConvert; import com.win.module.wms.convert.transactiontype.TransactiontypeConvert;
import com.win.module.wms.service.transactiontype.TransactiontypeService; import com.win.module.wms.service.transactiontype.TransactiontypeService;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "管理后台 - 事务类型") @Tag(name = "管理后台 - 事务类型")
@RestController @RestController
@ -99,4 +104,46 @@ public class TransactiontypeController {
ExcelUtils.write(response, "事务类型.xls", "数据", TransactiontypeExcelVO.class, datas); ExcelUtils.write(response, "事务类型.xls", "数据", TransactiontypeExcelVO.class, datas);
} }
@GetMapping("/get-import-template")
@Operation(summary = "获得导入仓库信息模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<TransactiontypeImportExcelVo> list = Arrays.asList(
);
// 手动创建导出 demo
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(4, available);
// 输出
// 输出
ExcelUtils.write(response, "仓库导入模板.xls", "仓库列表", TransactiontypeImportExcelVo.class, list,mapDropDown);
}
@PostMapping("/import")
@Operation(summary = "导入仓库信息")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:transactiontype:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<TransactiontypeImportExcelVo> list = ExcelUtils.read(file, TransactiontypeImportExcelVo.class);
List<TransactiontypeImportExcelVo> errorList = transactiontypeService.importTransactiontypeList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("仓库导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
} }

63
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transactiontype/vo/TransactiontypeImportExcelVo.java

@ -0,0 +1,63 @@
package com.win.module.wms.controller.transactiontype.vo;
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.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class TransactiontypeImportExcelVo {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述")
private String description;
@ExcelProperty("库存动作")
private String inventoryAction;
@ExcelProperty(value = "生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty(value = "失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty("备注")
private String remark;
@ExcelProperty(value = "允许为负数", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String allowNegative;
@ExcelProperty(value = "是否为空", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty(value = "是否软删除", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String isSoftDeleted;
}

53
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/WarehouseController.java

@ -2,25 +2,33 @@ package com.win.module.wms.controller.warehouse;
import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.wms.controller.itembasic.vo.ItembasicImportExcelVo;
import com.win.module.wms.controller.warehouse.vo.*; import com.win.module.wms.controller.warehouse.vo.*;
import com.win.module.wms.controller.workshop.vo.WorkshopImportExcelVo;
import com.win.module.wms.convert.warehouse.WarehouseConvert; import com.win.module.wms.convert.warehouse.WarehouseConvert;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO; import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.warehouse.WarehouseService; import com.win.module.wms.service.warehouse.WarehouseService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; 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.util.Collection; import java.time.LocalDateTime;
import java.util.List; import java.time.ZoneOffset;
import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -95,5 +103,46 @@ public class WarehouseController {
List<WarehouseExcelVO> datas = WarehouseConvert.INSTANCE.convertList02(list); List<WarehouseExcelVO> datas = WarehouseConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "仓库.xls", "数据", WarehouseExcelVO.class, datas); ExcelUtils.write(response, "仓库.xls", "数据", WarehouseExcelVO.class, datas);
} }
@GetMapping("/get-import-template")
@Operation(summary = "获得导入仓库信息模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<WarehouseImportExcelVo> list = Arrays.asList(
);
// 手动创建导出 demo
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(4, available);
// 输出
// 输出
ExcelUtils.write(response, "仓库导入模板.xls", "仓库列表", WarehouseImportExcelVo.class, list,mapDropDown);
}
@PostMapping("/import")
@Operation(summary = "导入仓库信息")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:warehouse:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<WarehouseImportExcelVo> list = ExcelUtils.read(file, WarehouseImportExcelVo.class);
List<WarehouseImportExcelVo> errorList = warehouseService.importWarehouseList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("仓库导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
} }

58
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/vo/WarehouseImportExcelVo.java

@ -0,0 +1,58 @@
package com.win.module.wms.controller.warehouse.vo;
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.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class WarehouseImportExcelVo {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述")
private String description;
@ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.WAREHOUSE_TYPE)
private String type;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty(value = "生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty(value = "失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty("备注")
private String remark;
}

44
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/WorkshopController.java

@ -2,25 +2,30 @@ package com.win.module.wms.controller.workshop;
import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.wms.controller.workshop.vo.*; import com.win.module.wms.controller.workshop.vo.*;
import com.win.module.wms.convert.workshop.WorkshopConvert; import com.win.module.wms.convert.workshop.WorkshopConvert;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.workshop.WorkshopService; import com.win.module.wms.service.workshop.WorkshopService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; 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.util.Collection; import java.time.LocalDateTime;
import java.util.List; import java.time.ZoneOffset;
import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -96,4 +101,39 @@ public class WorkshopController {
ExcelUtils.write(response, "车间.xls", "数据", WorkshopExcelVO.class, datas); ExcelUtils.write(response, "车间.xls", "数据", WorkshopExcelVO.class, datas);
} }
@GetMapping("/get-import-template")
@Operation(summary = "获得导入车间板模")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<WorkshopImportExcelVo> list = Arrays.asList();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(6, available);
// 输出
ExcelUtils.write(response, "车间导入模板.xls", "车间列表", WorkshopImportExcelVo.class, list,mapDropDown);
}
@PostMapping("/import")
@Operation(summary = "导入车间信息")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:workshop:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<WorkshopImportExcelVo> list = ExcelUtils.read(file, WorkshopImportExcelVo.class);
List<WorkshopImportExcelVo> errorList = workshopService.importUserList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("车间导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
} }

54
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/vo/WorkshopImportExcelVo.java

@ -0,0 +1,54 @@
package com.win.module.wms.controller.workshop.vo;
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.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class WorkshopImportExcelVo {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述")
private String description;
@ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.WORKSHOP_TYPE)
private String type;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty(value = "生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty(value = "失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty("备注")
private String remark;
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transactiontype/TransactiontypeConvert.java

@ -4,10 +4,9 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeCreateReqVO; import com.win.module.wms.controller.transactiontype.vo.*;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeExcelVO; import com.win.module.wms.controller.warehouse.vo.WarehouseImportExcelVo;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeRespVO; import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeUpdateReqVO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
@ -34,4 +33,7 @@ public interface TransactiontypeConvert {
List<TransactiontypeExcelVO> convertList02(List<TransactiontypeDO> list); List<TransactiontypeExcelVO> convertList02(List<TransactiontypeDO> list);
TransactiontypeDO convert(TransactiontypeExcelVO bean);
TransactiontypeDO convert(TransactiontypeImportExcelVo bean);
} }

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/warehouse/WarehouseConvert.java

@ -4,10 +4,11 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.warehouse.vo.WarehouseCreateReqVO; import com.win.module.wms.controller.areabasic.vo.AreabasicImportExcelVo;
import com.win.module.wms.controller.warehouse.vo.WarehouseExcelVO; import com.win.module.wms.controller.warehouse.vo.*;
import com.win.module.wms.controller.warehouse.vo.WarehouseRespVO; import com.win.module.wms.controller.workshop.vo.WorkshopImportExcelVo;
import com.win.module.wms.controller.warehouse.vo.WarehouseUpdateReqVO; import com.win.module.wms.dal.dataobject.areabasic.AreabasicDO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO; import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
@ -34,4 +35,6 @@ public interface WarehouseConvert {
List<WarehouseExcelVO> convertList02(List<WarehouseDO> list); List<WarehouseExcelVO> convertList02(List<WarehouseDO> list);
WarehouseDO convert(WarehouseImportExcelVo bean);
} }

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workshop/WorkshopConvert.java

@ -4,10 +4,11 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.workshop.vo.WorkshopCreateReqVO; import com.win.module.wms.controller.areabasic.vo.AreabasicImportExcelVo;
import com.win.module.wms.controller.workshop.vo.WorkshopExcelVO; import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO;
import com.win.module.wms.controller.workshop.vo.WorkshopRespVO; import com.win.module.wms.controller.workshop.vo.*;
import com.win.module.wms.controller.workshop.vo.WorkshopUpdateReqVO; import com.win.module.wms.dal.dataobject.areabasic.AreabasicDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
@ -34,4 +35,5 @@ public interface WorkshopConvert {
List<WorkshopExcelVO> convertList02(List<WorkshopDO> list); List<WorkshopExcelVO> convertList02(List<WorkshopDO> list);
WorkshopDO convert(WorkshopImportExcelVo importWorkshop);
} }

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transactiontype/TransactiontypeMapper.java

@ -8,6 +8,8 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeExportReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypeExportReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypePageReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypePageReqVO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -18,6 +20,11 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface TransactiontypeMapper extends BaseMapperX<TransactiontypeDO> { public interface TransactiontypeMapper extends BaseMapperX<TransactiontypeDO> {
default TransactiontypeDO selectByCode(String code) {
return selectOne(TransactiontypeDO::getCode, code);
}
default PageResult<TransactiontypeDO> selectPage(TransactiontypePageReqVO reqVO) { default PageResult<TransactiontypeDO> selectPage(TransactiontypePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<TransactiontypeDO>() return selectPage(reqVO, new LambdaQueryWrapperX<TransactiontypeDO>()
.eqIfPresent(TransactiontypeDO::getCode, reqVO.getCode()) .eqIfPresent(TransactiontypeDO::getCode, reqVO.getCode())

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/warehouse/WarehouseMapper.java

@ -8,6 +8,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.module.wms.controller.warehouse.vo.WarehouseExportReqVO; import com.win.module.wms.controller.warehouse.vo.WarehouseExportReqVO;
import com.win.module.wms.controller.warehouse.vo.WarehousePageReqVO; import com.win.module.wms.controller.warehouse.vo.WarehousePageReqVO;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO; import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -18,6 +19,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface WarehouseMapper extends BaseMapperX<WarehouseDO> { public interface WarehouseMapper extends BaseMapperX<WarehouseDO> {
default WarehouseDO selectByCode(String code) {
return selectOne(WarehouseDO::getCode, code);
}
default PageResult<WarehouseDO> selectPage(WarehousePageReqVO reqVO) { default PageResult<WarehouseDO> selectPage(WarehousePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<WarehouseDO>() return selectPage(reqVO, new LambdaQueryWrapperX<WarehouseDO>()
.eqIfPresent(WarehouseDO::getCode, reqVO.getCode()) .eqIfPresent(WarehouseDO::getCode, reqVO.getCode())

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/workshop/WorkshopMapper.java

@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.module.wms.controller.workshop.vo.WorkshopExportReqVO; import com.win.module.wms.controller.workshop.vo.WorkshopExportReqVO;
import com.win.module.wms.controller.workshop.vo.WorkshopPageReqVO; import com.win.module.wms.controller.workshop.vo.WorkshopPageReqVO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -18,6 +19,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface WorkshopMapper extends BaseMapperX<WorkshopDO> { public interface WorkshopMapper extends BaseMapperX<WorkshopDO> {
default WorkshopDO selectByCode(String code) {
return selectOne(WorkshopDO::getCode, code);
}
default PageResult<WorkshopDO> selectPage(WorkshopPageReqVO reqVO) { default PageResult<WorkshopDO> selectPage(WorkshopPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<WorkshopDO>() return selectPage(reqVO, new LambdaQueryWrapperX<WorkshopDO>()
.eqIfPresent(WorkshopDO::getCode, reqVO.getCode()) .eqIfPresent(WorkshopDO::getCode, reqVO.getCode())

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transactiontype/TransactiontypeService.java

@ -7,6 +7,9 @@ import com.win.module.wms.controller.transactiontype.vo.TransactiontypeCreateReq
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeExportReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypeExportReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypePageReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypePageReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeUpdateReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypeUpdateReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeImportExcelVo;
import com.win.module.wms.controller.warehouse.vo.WarehouseImportExcelVo;
import com.win.module.wms.controller.workshop.vo.WorkshopImportExcelVo;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
@ -71,4 +74,10 @@ public interface TransactiontypeService {
*/ */
List<TransactiontypeDO> getTransactiontypeList(TransactiontypeExportReqVO exportReqVO); List<TransactiontypeDO> getTransactiontypeList(TransactiontypeExportReqVO exportReqVO);
List<TransactiontypeImportExcelVo> importTransactiontypeList(List<TransactiontypeImportExcelVo> importWarehouse, Integer mode, boolean updatePart);
} }

103
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transactiontype/TransactiontypeServiceImpl.java

@ -1,23 +1,35 @@
package com.win.module.wms.service.transactiontype; package com.win.module.wms.service.transactiontype;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeCreateReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypeCreateReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeExportReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypeExportReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypePageReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypePageReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeUpdateReqVO; import com.win.module.wms.controller.transactiontype.vo.TransactiontypeUpdateReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeImportExcelVo;
import com.win.module.wms.convert.transactiontype.TransactiontypeConvert;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.util.*; import java.util.*;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.convert.transactiontype.TransactiontypeConvert;
import com.win.module.wms.dal.mysql.transactiontype.TransactiontypeMapper; import com.win.module.wms.dal.mysql.transactiontype.TransactiontypeMapper;
;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; 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.wms.enums.ErrorCodeConstants.*; import static com.win.module.wms.enums.ErrorCodeConstants.*;
import static com.win.module.wms.enums.transactiontype.ErrorCodeConstants.*;
/** /**
* 事务类型 Service 实现类 * 事务类型 Service 实现类
@ -59,7 +71,7 @@ public class TransactiontypeServiceImpl implements TransactiontypeService {
private void validateTransactiontypeExists(Long id) { private void validateTransactiontypeExists(Long id) {
if (transactiontypeMapper.selectById(id) == null) { if (transactiontypeMapper.selectById(id) == null) {
throw exception(TRANSACTIONTYPE_NOT_EXISTS); throw exception(NOT_EXISTS);
} }
} }
@ -82,5 +94,90 @@ public class TransactiontypeServiceImpl implements TransactiontypeService {
public List<TransactiontypeDO> getTransactiontypeList(TransactiontypeExportReqVO exportReqVO) { public List<TransactiontypeDO> getTransactiontypeList(TransactiontypeExportReqVO exportReqVO) {
return transactiontypeMapper.selectList(exportReqVO); return transactiontypeMapper.selectList(exportReqVO);
} }
public List<TransactiontypeImportExcelVo> importTransactiontypeList(List<TransactiontypeImportExcelVo> transactiontypes, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(transactiontypes)) {
throw exception(USER_IMPORT_LIST_IS_EMPTY);
}
List<TransactiontypeImportExcelVo> errorList = new ArrayList<>();
transactiontypes.forEach(transactiontype -> {
// 校验,判断是否有不符合的原因
try {
if(mode != null){
validateTransactiontypeForCreateOrUpdate(null,transactiontype.getCode(),transactiontype.getAvailable());
}
} catch (ServiceException ex) {
errorList.add(transactiontype);
return;
}
// 判断如果不存在,在进行插入
TransactiontypeDO existTransactiontype = transactiontypeMapper.selectByCode(transactiontype.getCode());
if (existTransactiontype == null&& mode != 3) {
transactiontypeMapper.insert(TransactiontypeConvert.INSTANCE.convert(transactiontype));
}
else if (existTransactiontype != null && mode != 2) {// 如果存在,判断是否允许更新
TransactiontypeDO transactiontypeDO = TransactiontypeConvert.INSTANCE.convert(transactiontype);
transactiontypeDO.setId(existTransactiontype.getId());
transactiontypeMapper.updateById(transactiontypeDO);
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
private void validateTransactiontypeForCreateOrUpdate(Long id, String code, String available) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> {
validateTransactiontypepExists(id);
// 校验code唯一
validateCodeExists(id,code);
validateAvailableExists(available);
});
}
@VisibleForTesting
private void validateTransactiontypepExists(Long id) {
if (id == null) {
return;
}
TransactiontypeDO transactiontype = transactiontypeMapper.selectById(id);
if (transactiontype == null) {
throw exception(TRANSACTIONTYPE_NOT_EXISTS);
}
}
@VisibleForTesting
private void validateCodeExists(Long id,String code) {
if (code.isEmpty()) {
throw exception(CODE_EXISTSNO);
}
if (StrUtil.isBlank(code)) {
return;
}
TransactiontypeDO transactiontype = transactiontypeMapper.selectByCode(code);
if (transactiontype == null) {
return;
}
// 如果 id 为空,说明不用比较是否为相同 id 的用户
if (id == null) {
throw exception(TRANSACTIONTYPE_CODE_EXISTS);
}
if (!transactiontype.getId().equals(id)) {
throw exception(CODE_EXISTSNO);
}
}
@VisibleForTesting
private void validateAvailableExists(String available) {
if (available == null) {
throw exception(TRANSACTIONTYPE_AVAIABLE_NOT_EXISTS);
}
}
} }

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseService.java

@ -3,10 +3,8 @@ package com.win.module.wms.service.warehouse;
import java.util.*; import java.util.*;
import javax.validation.*; import javax.validation.*;
import com.win.module.wms.controller.warehouse.vo.WarehouseCreateReqVO; import com.win.module.wms.controller.itembasic.vo.ItembasicImportExcelVo;
import com.win.module.wms.controller.warehouse.vo.WarehouseExportReqVO; import com.win.module.wms.controller.warehouse.vo.*;
import com.win.module.wms.controller.warehouse.vo.WarehousePageReqVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseUpdateReqVO;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO; import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
@ -71,4 +69,7 @@ public interface WarehouseService {
*/ */
List<WarehouseDO> getWarehouseList(WarehouseExportReqVO exportReqVO); List<WarehouseDO> getWarehouseList(WarehouseExportReqVO exportReqVO);
List<WarehouseImportExcelVo> importWarehouseList(List<WarehouseImportExcelVo> warehouses, Integer mode, boolean updatePart);
} }

108
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java

@ -1,22 +1,40 @@
package com.win.module.wms.service.warehouse; package com.win.module.wms.service.warehouse;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.warehouse.vo.WarehouseCreateReqVO; import com.win.module.wms.controller.warehouse.vo.WarehouseCreateReqVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseExportReqVO; import com.win.module.wms.controller.warehouse.vo.WarehouseExportReqVO;
import com.win.module.wms.controller.warehouse.vo.WarehousePageReqVO; import com.win.module.wms.controller.warehouse.vo.WarehousePageReqVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseUpdateReqVO; import com.win.module.wms.controller.warehouse.vo.WarehouseUpdateReqVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseImportExcelVo;
import com.win.module.wms.controller.warehouse.vo.WarehouseImportExcelVo;
import com.win.module.wms.convert.warehouse.WarehouseConvert; import com.win.module.wms.convert.warehouse.WarehouseConvert;
import com.win.module.wms.convert.warehouse.WarehouseConvert;
import com.win.module.wms.convert.warehouse.WarehouseConvert;
import com.win.module.wms.convert.workshop.WorkshopConvert;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO; import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.module.wms.dal.mysql.warehouse.WarehouseMapper; import com.win.module.wms.dal.mysql.warehouse.WarehouseMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.warehouse.ErrorCodeConstants.WAREHOUSE_NOT_EXISTS; import static com.win.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.warehouse.ErrorCodeConstants.*;
/** /**
* 仓库 Service 实现类 * 仓库 Service 实现类
@ -32,6 +50,8 @@ public class WarehouseServiceImpl implements WarehouseService {
@Override @Override
public Long createWarehouse(WarehouseCreateReqVO createReqVO) { public Long createWarehouse(WarehouseCreateReqVO createReqVO) {
validateWarehouseForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getAvailable());
// 插入 // 插入
WarehouseDO warehouse = WarehouseConvert.INSTANCE.convert(createReqVO); WarehouseDO warehouse = WarehouseConvert.INSTANCE.convert(createReqVO);
warehouseMapper.insert(warehouse); warehouseMapper.insert(warehouse);
@ -42,7 +62,7 @@ public class WarehouseServiceImpl implements WarehouseService {
@Override @Override
public void updateWarehouse(WarehouseUpdateReqVO updateReqVO) { public void updateWarehouse(WarehouseUpdateReqVO updateReqVO) {
// 校验存在 // 校验存在
validateWarehouseExists(updateReqVO.getId()); validateWarehouseForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getAvailable());
// 更新 // 更新
WarehouseDO updateObj = WarehouseConvert.INSTANCE.convert(updateReqVO); WarehouseDO updateObj = WarehouseConvert.INSTANCE.convert(updateReqVO);
warehouseMapper.updateById(updateObj); warehouseMapper.updateById(updateObj);
@ -82,4 +102,88 @@ public class WarehouseServiceImpl implements WarehouseService {
return warehouseMapper.selectList(exportReqVO); return warehouseMapper.selectList(exportReqVO);
} }
public List<WarehouseImportExcelVo> importWarehouseList(List<WarehouseImportExcelVo> warehouses, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(warehouses)) {
throw exception(USER_IMPORT_LIST_IS_EMPTY);
}
List<WarehouseImportExcelVo> errorList = new ArrayList<>();
warehouses.forEach(warehouse -> {
// 校验,判断是否有不符合的原因
try {
if(mode != null){
validateWarehouseForCreateOrUpdate(null,warehouse.getCode(),warehouse.getAvailable());
}
} catch (ServiceException ex) {
errorList.add(warehouse);
return;
}
// 判断如果不存在,在进行插入
WarehouseDO existWarehouse = warehouseMapper.selectByCode(warehouse.getCode());
if (existWarehouse == null&& mode != 3) {
warehouseMapper.insert(WarehouseConvert.INSTANCE.convert(warehouse));
}
else if (existWarehouse != null && mode != 2) {// 如果存在,判断是否允许更新
WarehouseDO warehouseDO = WarehouseConvert.INSTANCE.convert(warehouse);
warehouseDO.setId(existWarehouse.getId());
warehouseMapper.updateById(warehouseDO);
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
private void validateWarehouseForCreateOrUpdate(Long id, String code, String available) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> {
validateWarehousepExists(id);
// 校验code唯一
validateCodeExists(id,code);
validateAvailableExists(available);
});
}
@VisibleForTesting
private void validateWarehousepExists(Long id) {
if (id == null) {
return;
}
WarehouseDO warehouse = warehouseMapper.selectById(id);
if (warehouse == null) {
throw exception(WAREHOUSE_NOT_EXISTS);
}
}
@VisibleForTesting
private void validateCodeExists(Long id,String code) {
if (code.isEmpty()) {
throw exception(WAREHOUSE_CODE_EXISTS);
}
if (StrUtil.isBlank(code)) {
return;
}
WarehouseDO warehouse = warehouseMapper.selectByCode(code);
if (warehouse == null) {
return;
}
// 如果 id 为空,说明不用比较是否为相同 id 的用户
if (id == null) {
throw exception(WAREHOUSE_CODE_EXISTS);
}
if (!warehouse.getId().equals(id)) {
throw exception(WAREHOUSE_CODE_EXISTS);
}
}
@VisibleForTesting
private void validateAvailableExists(String available) {
if (available == null) {
throw exception(WAREHOUSE_AVAIABLE_NOT_EXISTS);
}
}
} }

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopService.java

@ -3,10 +3,8 @@ package com.win.module.wms.service.workshop;
import java.util.*; import java.util.*;
import javax.validation.*; import javax.validation.*;
import com.win.module.wms.controller.workshop.vo.WorkshopCreateReqVO; import com.win.module.wms.controller.itembasic.vo.ItembasicImportExcelVo;
import com.win.module.wms.controller.workshop.vo.WorkshopExportReqVO; import com.win.module.wms.controller.workshop.vo.*;
import com.win.module.wms.controller.workshop.vo.WorkshopPageReqVO;
import com.win.module.wms.controller.workshop.vo.WorkshopUpdateReqVO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
@ -71,4 +69,6 @@ public interface WorkshopService {
*/ */
List<WorkshopDO> getWorkshopList(WorkshopExportReqVO exportReqVO); List<WorkshopDO> getWorkshopList(WorkshopExportReqVO exportReqVO);
List<WorkshopImportExcelVo> importUserList(List<WorkshopImportExcelVo> importWorkshop, Integer mode, boolean updatePart);
} }

107
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java

@ -1,22 +1,34 @@
package com.win.module.wms.service.workshop; package com.win.module.wms.service.workshop;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.StrUtil;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.workshop.vo.WorkshopCreateReqVO; import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.workshop.vo.WorkshopExportReqVO; import com.win.module.wms.controller.itembasic.vo.ItembasicImportExcelVo;
import com.win.module.wms.controller.workshop.vo.WorkshopPageReqVO; import com.win.module.wms.controller.workshop.vo.*;
import com.win.module.wms.controller.workshop.vo.WorkshopUpdateReqVO; import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.convert.workshop.WorkshopConvert; import com.win.module.wms.convert.workshop.WorkshopConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import com.win.module.wms.dal.mysql.workshop.WorkshopMapper; import com.win.module.wms.dal.mysql.workshop.WorkshopMapper;
import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.workshop.ErrorCodeConstants.WORKSHOP_NOT_EXISTS; import static com.win.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.workshop.ErrorCodeConstants.*;
/** /**
* 车间 Service 实现类 * 车间 Service 实现类
@ -32,6 +44,7 @@ public class WorkshopServiceImpl implements WorkshopService {
@Override @Override
public Long createWorkshop(WorkshopCreateReqVO createReqVO) { public Long createWorkshop(WorkshopCreateReqVO createReqVO) {
validateWorkshopForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getAvailable());
// 插入 // 插入
WorkshopDO workshop = WorkshopConvert.INSTANCE.convert(createReqVO); WorkshopDO workshop = WorkshopConvert.INSTANCE.convert(createReqVO);
workshopMapper.insert(workshop); workshopMapper.insert(workshop);
@ -42,7 +55,7 @@ public class WorkshopServiceImpl implements WorkshopService {
@Override @Override
public void updateWorkshop(WorkshopUpdateReqVO updateReqVO) { public void updateWorkshop(WorkshopUpdateReqVO updateReqVO) {
// 校验存在 // 校验存在
validateWorkshopExists(updateReqVO.getId()); validateWorkshopForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getAvailable());
// 更新 // 更新
WorkshopDO updateObj = WorkshopConvert.INSTANCE.convert(updateReqVO); WorkshopDO updateObj = WorkshopConvert.INSTANCE.convert(updateReqVO);
workshopMapper.updateById(updateObj); workshopMapper.updateById(updateObj);
@ -82,4 +95,86 @@ public class WorkshopServiceImpl implements WorkshopService {
return workshopMapper.selectList(exportReqVO); return workshopMapper.selectList(exportReqVO);
} }
public List<WorkshopImportExcelVo> importUserList(List<WorkshopImportExcelVo> importWork, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(importWork)) {
throw exception(USER_IMPORT_LIST_IS_EMPTY);
}
List<WorkshopImportExcelVo> errorList = new ArrayList<>();
importWork.forEach(importWorkshop -> {
// 校验,判断是否有不符合的原因
try {
if(mode != null){
validateWorkshopForCreateOrUpdate(null,importWorkshop.getCode(),importWorkshop.getAvailable());
}
} catch (ServiceException ex) {
errorList.add(importWorkshop);
return;
}
// 判断如果不存在,在进行插入
WorkshopDO existWorkshop = workshopMapper.selectByCode(importWorkshop.getCode());
if (existWorkshop == null&& mode != 3) {
workshopMapper.insert(WorkshopConvert.INSTANCE.convert(importWorkshop));
}
else if (existWorkshop != null && mode != 2) {// 如果存在,判断是否允许更新
WorkshopDO workshopDO = WorkshopConvert.INSTANCE.convert(importWorkshop);
workshopDO.setId(existWorkshop.getId());
workshopMapper.updateById(workshopDO);
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
private void validateWorkshopForCreateOrUpdate(Long id, String code, String available) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> {
validateWorkshoppExists(id);
// 校验code唯一
validateCodeExists(id,code);
validateAvailableExists(available);
});
}
@VisibleForTesting
private void validateWorkshoppExists(Long id) {
if (id == null) {
return;
}
WorkshopDO workshop = workshopMapper.selectById(id);
if (workshop == null) {
throw exception(WORKSHOP_NOT_EXISTS);
}
}
@VisibleForTesting
private void validateCodeExists(Long id,String code) {
if (code.isEmpty()) {
throw exception(CODE_EXISTSNO);
}
if (StrUtil.isBlank(code)) {
return;
}
WorkshopDO workshop = workshopMapper.selectByCode(code);
if (workshop == null) {
return;
}
// 如果 id 为空,说明不用比较是否为相同 id 的用户
if (id == null) {
throw exception(CODE_EXISTS);
}
if (!workshop.getId().equals(id)) {
throw exception(CODE_EXISTS);
}
}
@VisibleForTesting
private void validateAvailableExists(String available) {
if (available == null) {
throw exception(AVAIABLE_NOT_EXISTS);
}
}
} }

Loading…
Cancel
Save