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. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java
  8. 49
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transactiontype/TransactiontypeController.java
  9. 63
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transactiontype/vo/TransactiontypeImportExcelVo.java
  10. 53
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/WarehouseController.java
  11. 58
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/vo/WarehouseImportExcelVo.java
  12. 44
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/WorkshopController.java
  13. 54
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workshop/vo/WorkshopImportExcelVo.java
  14. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transactiontype/TransactiontypeConvert.java
  15. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/warehouse/WarehouseConvert.java
  16. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workshop/WorkshopConvert.java
  17. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transactiontype/TransactiontypeMapper.java
  18. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/warehouse/WarehouseMapper.java
  19. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/workshop/WorkshopMapper.java
  20. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transactiontype/TransactiontypeService.java
  21. 103
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transactiontype/TransactiontypeServiceImpl.java
  22. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseService.java
  23. 108
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java
  24. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopService.java
  25. 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_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 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 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")
@Operation(summary = "获得导入账期日历板")
@Operation(summary = "获得导入账期日历板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
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 {
@ExcelProperty("年")
private String year;
private String code;
@ExcelProperty("月")
private String month;

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

@ -191,9 +191,9 @@ public class ItembasicController {
})
@PreAuthorize("@ss.hasPermission('wms:itembasic: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 {
@RequestParam("file") MultipartFile file,
@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> errorList = itembasicService.importItembasicList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();

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;
import com.win.framework.dict.core.util.DictFrameworkUtils;
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 javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -11,6 +14,8 @@ import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
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 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.convert.transactiontype.TransactiontypeConvert;
import com.win.module.wms.service.transactiontype.TransactiontypeService;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "管理后台 - 事务类型")
@RestController
@ -99,4 +104,46 @@ public class TransactiontypeController {
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.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ExcelUtils;
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.workshop.vo.WorkshopImportExcelVo;
import com.win.module.wms.convert.warehouse.WarehouseConvert;
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 io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -95,5 +103,46 @@ public class WarehouseController {
List<WarehouseExcelVO> datas = WarehouseConvert.INSTANCE.convertList02(list);
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.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.wms.controller.workshop.vo.*;
import com.win.module.wms.convert.workshop.WorkshopConvert;
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 io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -96,4 +101,39 @@ public class WorkshopController {
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.module.wms.controller.transactiontype.vo.TransactiontypeCreateReqVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeExcelVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeRespVO;
import com.win.module.wms.controller.transactiontype.vo.TransactiontypeUpdateReqVO;
import com.win.module.wms.controller.transactiontype.vo.*;
import com.win.module.wms.controller.warehouse.vo.WarehouseImportExcelVo;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
@ -34,4 +33,7 @@ public interface TransactiontypeConvert {
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.module.wms.controller.warehouse.vo.WarehouseCreateReqVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseExcelVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseRespVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseUpdateReqVO;
import com.win.module.wms.controller.areabasic.vo.AreabasicImportExcelVo;
import com.win.module.wms.controller.warehouse.vo.*;
import com.win.module.wms.controller.workshop.vo.WorkshopImportExcelVo;
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.factory.Mappers;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
@ -34,4 +35,6 @@ public interface WarehouseConvert {
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.module.wms.controller.workshop.vo.WorkshopCreateReqVO;
import com.win.module.wms.controller.workshop.vo.WorkshopExcelVO;
import com.win.module.wms.controller.workshop.vo.WorkshopRespVO;
import com.win.module.wms.controller.workshop.vo.WorkshopUpdateReqVO;
import com.win.module.wms.controller.areabasic.vo.AreabasicImportExcelVo;
import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO;
import com.win.module.wms.controller.workshop.vo.*;
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.factory.Mappers;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
@ -34,4 +35,5 @@ public interface WorkshopConvert {
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.TransactiontypePageReqVO;
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;
/**
@ -18,6 +20,11 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TransactiontypeMapper extends BaseMapperX<TransactiontypeDO> {
default TransactiontypeDO selectByCode(String code) {
return selectOne(TransactiontypeDO::getCode, code);
}
default PageResult<TransactiontypeDO> selectPage(TransactiontypePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<TransactiontypeDO>()
.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.WarehousePageReqVO;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import org.apache.ibatis.annotations.Mapper;
/**
@ -18,6 +19,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface WarehouseMapper extends BaseMapperX<WarehouseDO> {
default WarehouseDO selectByCode(String code) {
return selectOne(WarehouseDO::getCode, code);
}
default PageResult<WarehouseDO> selectPage(WarehousePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<WarehouseDO>()
.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.module.wms.controller.workshop.vo.WorkshopExportReqVO;
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 org.apache.ibatis.annotations.Mapper;
@ -18,6 +19,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface WorkshopMapper extends BaseMapperX<WorkshopDO> {
default WorkshopDO selectByCode(String code) {
return selectOne(WorkshopDO::getCode, code);
}
default PageResult<WorkshopDO> selectPage(WorkshopPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<WorkshopDO>()
.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.TransactiontypePageReqVO;
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.framework.common.pojo.PageResult;
@ -71,4 +74,10 @@ public interface TransactiontypeService {
*/
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;
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.TransactiontypeExportReqVO;
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.TransactiontypeImportExcelVo;
import com.win.module.wms.convert.transactiontype.TransactiontypeConvert;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
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 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.transactiontype.ErrorCodeConstants.*;
/**
* 事务类型 Service 实现类
@ -59,7 +71,7 @@ public class TransactiontypeServiceImpl implements TransactiontypeService {
private void validateTransactiontypeExists(Long id) {
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) {
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 javax.validation.*;
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.WarehousePageReqVO;
import com.win.module.wms.controller.warehouse.vo.WarehouseUpdateReqVO;
import com.win.module.wms.controller.itembasic.vo.ItembasicImportExcelVo;
import com.win.module.wms.controller.warehouse.vo.*;
import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO;
import com.win.framework.common.pojo.PageResult;
@ -71,4 +69,7 @@ public interface WarehouseService {
*/
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;
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.datapermission.core.util.DataPermissionUtils;
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.WarehousePageReqVO;
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.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.mysql.warehouse.WarehouseMapper;
import org.springframework.stereotype.Service;
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.List;
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 实现类
@ -32,6 +50,8 @@ public class WarehouseServiceImpl implements WarehouseService {
@Override
public Long createWarehouse(WarehouseCreateReqVO createReqVO) {
validateWarehouseForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getAvailable());
// 插入
WarehouseDO warehouse = WarehouseConvert.INSTANCE.convert(createReqVO);
warehouseMapper.insert(warehouse);
@ -42,7 +62,7 @@ public class WarehouseServiceImpl implements WarehouseService {
@Override
public void updateWarehouse(WarehouseUpdateReqVO updateReqVO) {
// 校验存在
validateWarehouseExists(updateReqVO.getId());
validateWarehouseForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getAvailable());
// 更新
WarehouseDO updateObj = WarehouseConvert.INSTANCE.convert(updateReqVO);
warehouseMapper.updateById(updateObj);
@ -82,4 +102,88 @@ public class WarehouseServiceImpl implements WarehouseService {
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 javax.validation.*;
import com.win.module.wms.controller.workshop.vo.WorkshopCreateReqVO;
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.WorkshopUpdateReqVO;
import com.win.module.wms.controller.itembasic.vo.ItembasicImportExcelVo;
import com.win.module.wms.controller.workshop.vo.*;
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO;
import com.win.framework.common.pojo.PageResult;
@ -71,4 +69,6 @@ public interface WorkshopService {
*/
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;
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.module.wms.controller.workshop.vo.WorkshopCreateReqVO;
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.WorkshopUpdateReqVO;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.itembasic.vo.ItembasicImportExcelVo;
import com.win.module.wms.controller.workshop.vo.*;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
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.mysql.workshop.WorkshopMapper;
import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
import org.springframework.stereotype.Service;
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.List;
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 实现类
@ -32,6 +44,7 @@ public class WorkshopServiceImpl implements WorkshopService {
@Override
public Long createWorkshop(WorkshopCreateReqVO createReqVO) {
validateWorkshopForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getAvailable());
// 插入
WorkshopDO workshop = WorkshopConvert.INSTANCE.convert(createReqVO);
workshopMapper.insert(workshop);
@ -42,7 +55,7 @@ public class WorkshopServiceImpl implements WorkshopService {
@Override
public void updateWorkshop(WorkshopUpdateReqVO updateReqVO) {
// 校验存在
validateWorkshopExists(updateReqVO.getId());
validateWorkshopForCreateOrUpdate(updateReqVO.getId(),updateReqVO.getCode(),updateReqVO.getAvailable());
// 更新
WorkshopDO updateObj = WorkshopConvert.INSTANCE.convert(updateReqVO);
workshopMapper.updateById(updateObj);
@ -82,4 +95,86 @@ public class WorkshopServiceImpl implements WorkshopService {
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