Browse Source

制品报废申请,制品上架申请,库存初始化申请

master
廉洪喜 2 years ago
parent
commit
913efdc7a4
  1. 2
      win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java
  2. 6
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java
  3. 2
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataService.java
  4. 11
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataServiceImpl.java
  5. 5
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  6. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/InventoryinitRequestMainController.java
  7. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainBaseVO.java
  8. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainExportReqVO.java
  9. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainImportVO.java
  10. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainPageReqVO.java
  11. 60
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java
  12. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportErrorVO.java
  13. 54
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportExcelVO.java
  14. 59
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java
  15. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java
  16. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainCreateReqVO.java
  17. 36
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java
  18. 26
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportErrorVO.java
  19. 65
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportVO.java
  20. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainCreateReqVO.java
  21. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java
  22. 29
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java
  23. 27
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java
  24. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java
  25. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestDetailConvert.java
  26. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventoryinitRequest/InventoryinitRequestMainDO.java
  27. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventoryinitRequest/InventoryinitRequestMainMapper.java
  28. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestMainMapper.java
  29. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRequest/ProductscrapRequestMainMapper.java
  30. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java
  31. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/enterprise/EnterpriseServiceImpl.java
  32. 172
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java
  33. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java
  34. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java
  35. 24
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java
  36. 252
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java
  37. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java
  38. 210
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java
  39. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingServiceImpl.java
  40. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java
  41. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java

2
win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java

@ -65,4 +65,6 @@ public interface DictDataApi {
* @return
*/
DictDataRespDTO selectDictLabel( String plabel);
DictDataRespDTO selectDictValue( String value);
}

6
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java

@ -60,4 +60,10 @@ public class DictDataApiImpl implements DictDataApi {
DictDataDO dictDataDO = dictDataService.selectDictLabel(plabel);
return DictDataConvert.INSTANCE.convert02(dictDataDO);
}
@Override
public DictDataRespDTO selectDictValue( String value){
DictDataDO dictDataDO = dictDataService.selectDictValue(value);
return DictDataConvert.INSTANCE.convert02(dictDataDO);
}
}

2
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataService.java

@ -109,4 +109,6 @@ public interface DictDataService {
DictDataDO selectDictTypeAndLabel(String ptype, String plabel);
DictDataDO selectDictLabel(String plabel);
DictDataDO selectDictValue(String value);
}

11
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictDataServiceImpl.java

@ -218,4 +218,15 @@ public class DictDataServiceImpl implements DictDataService {
throw new UtilException( "未查到字典相关标签");
}
}
@Override
public DictDataDO selectDictValue(String value){
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("value",value);
DictDataDO dictDataDO = dictDataMapper.selectOne(queryWrapper1);
if(dictDataDO != null && 0 == dictDataDO.getStatus()){
return dictDataDO;
}else {
throw new UtilException( "未查到字典相关标签");
}
}
}

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

@ -623,6 +623,9 @@ public interface ErrorCodeConstants {
ErrorCode PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_110_000, "制品报废申请主不存在");
//制品报废申请子ErrorCode
ErrorCode PRODUCTSCRAP_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_001_110_001, "制品报废申请子不存在");
//制品报废申请子ErrorCode
ErrorCode PRODUCTSCRAP_REQUEST_NOT_EXISTS = new ErrorCode(1_001_110_002, "制品报废申请不存在");
//制品报废任务主ErrorCode
ErrorCode PRODUCTSCRAP_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_111_000, "制品报废任务主不存在");
//制品报废任务子ErrorCode
@ -634,6 +637,8 @@ public interface ErrorCodeConstants {
//制品上架申请ErrorCode
ErrorCode PRODUCTPUTAWAY_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_112_000, "制品上架申请主不存在");
ErrorCode PRODUCTPUTAWAY_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_112_001, "制品上架申请子不存在");
//制品上架申请ErrorCode
ErrorCode PRODUCTPUTAWAY_REQUEST_NOT_EXISTS = new ErrorCode(1_000_112_002, "制品上架申请不存在");
//制品上架任务ErrorCode
ErrorCode PRODUCTPUTAWAY_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_113_000, "制品上架任务主不存在");
ErrorCode PRODUCTPUTAWAY_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_113_001, "制品上架任务子不存在");

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/InventoryinitRequestMainController.java

@ -3,6 +3,7 @@ package com.win.module.wms.controller.inventoryinitRequest;
import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ConvertUtil;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
@ -11,6 +12,7 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.inventoryinitRequest.vo.*;
import com.win.module.wms.convert.inventoryinitRequest.InventoryinitRequestMainConvert;
import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.inventoryinitRequest.InventoryinitRequestMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -129,16 +131,16 @@ public class InventoryinitRequestMainController {
// 手动创建导出 demo
List<InventoryinitRequestMainImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>();
// String[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON);
// mapDropDown.put(16, purchaseReturnReason);
// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
// mapDropDown.put(25, uom);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(10, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(13, uom);
// 输出
ExcelUtils.write(response, "库存初始化申请信息导入模板.xlsx", "库存初始化申请信息列表", InventoryinitRequestMainImportVO.class, list, mapDropDown);
}
@PostMapping("/import")
@Operation(summary = "导入要货计划")
@Operation(summary = "导入库存初始化申请")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@ -156,10 +158,11 @@ public class InventoryinitRequestMainController {
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("生产订单基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
String url = ExcelUtils.writeLocalFile("库存初始化基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainBaseVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.inventoryinitRequest.vo;
import com.win.framework.excel.core.annotations.OnlyOne;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -25,6 +26,7 @@ public class InventoryinitRequestMainBaseVO {
@Schema(description = "仓库代码")
private String warehouseCode;
@OnlyOne
@Schema(description = "单据号")
private String number;

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainExportReqVO.java

@ -27,7 +27,7 @@ public class InventoryinitRequestMainExportReqVO {
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] creationTime;
private LocalDateTime[] createTime;
@Schema(description = "创建者用户名")
private String creator;

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainImportVO.java

@ -2,6 +2,9 @@ package com.win.module.wms.controller.inventoryinitRequest.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.annotations.OnlyOne;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -22,13 +25,21 @@ import java.time.LocalDateTime;
public class InventoryinitRequestMainImportVO{
//主表数据
@OnlyOne
@ExcelProperty("仓库代码")
private String warehouseCode;
@ExcelProperty("单据号")
private String number;
//子表数据
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("器具号")
private String containerNumber;
@ -47,10 +58,12 @@ public class InventoryinitRequestMainImportVO{
private String produceDate;
@ExcelProperty("过期日期")
@ColumnWidth(value = 16)
private String expireDate;
@ExcelProperty("库存状态")
private LocalDateTime inventoryStatus;
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("库位代码")
private String locationCode;
@ -59,5 +72,6 @@ public class InventoryinitRequestMainImportVO{
private String qty;
@ExcelProperty("计量单位")
@DictFormat(DictTypeConstants.UOM)
private String uom;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventoryinitRequest/vo/InventoryinitRequestMainPageReqVO.java

@ -29,7 +29,7 @@ public class InventoryinitRequestMainPageReqVO extends PageParam {
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] creationTime;
private LocalDateTime[] createTime;
@Schema(description = "创建者用户名")
private String creator;

60
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java

@ -3,6 +3,8 @@ package com.win.module.wms.controller.productputawayRequest;
import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ConvertUtil;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
@ -10,20 +12,24 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.productputawayRequest.vo.*;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.productputawayRequest.ProductputawayRequestMainService;
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,25 +101,25 @@ public class ProductputawayRequestMainController {
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:export')")
@OperateLog(type = EXPORT)
public void exportProductputawayRequestMainExcel(@Valid ProductputawayRequestMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
HttpServletResponse response) throws IOException {
List<ProductputawayRequestMainDO> list = productputawayRequestMainService.getProductputawayRequestMainList(exportReqVO);
// 导出 Excel
List<ProductputawayRequestMainExcelVO> datas = ProductputawayRequestMainConvert.INSTANCE.convertList02(list);
for(ProductputawayRequestMainExcelVO vo : datas) {
for (ProductputawayRequestMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "制品上架申请主.xls", "数据", ProductputawayRequestMainExcelVO.class, datas);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得制品上架申请主分页")
@PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:query')")
public CommonResult<PageResult<ProductputawayRequestMainRespVO>> getProductputawayRequestMainSenior(@Valid @RequestBody CustomConditions conditions) {
PageResult<ProductputawayRequestMainDO> pageResult = productputawayRequestMainService.getProductputawayRequestMainSenior(conditions);
PageResult<ProductputawayRequestMainRespVO> result = ProductputawayRequestMainConvert.INSTANCE.convertPage(pageResult);
for(ProductputawayRequestMainRespVO vo : result.getList()) {
for (ProductputawayRequestMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
@ -121,4 +127,46 @@ public class ProductputawayRequestMainController {
return success(result);
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入制品上架申请信息模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<ProductputawayImportVO> list = Arrays.asList(
// ProductputawayImportExcelVO.builder().code("code").name("name").build()
);
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(3, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(7, uom);
// 输出
ExcelUtils.write(response, "制品上架申请信息导入模板.xls", "制品上架申请信息列表", ProductputawayImportVO.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:productputaway-request-main: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<ProductputawayImportVO> list = ExcelUtils.read(file, ProductputawayImportVO.class);
ConvertUtil<ProductputawayRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(ProductputawayRequestMainCreateReqVO.class);
List<ProductputawayRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<ProductputawayImportErrorVO> errorList = productputawayRequestMainService.importProductputawayRequestList(createReqVOList, 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")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
}

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportErrorVO.java

@ -0,0 +1,23 @@
package com.win.module.wms.controller.productputawayRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
* 采购索赔申请子 Excel VO
*
* @author 超级管理员
*/
@Data
@ToString(callSuper = true)
public class ProductputawayImportErrorVO {
@ExcelProperty(value = "导入状态", index = 0)
private String importStatus;
@ExcelProperty(value = "导入说明", index = 1)
private String importRemark;
}

54
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportExcelVO.java

@ -0,0 +1,54 @@
package com.win.module.wms.controller.productputawayRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
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 java.math.BigDecimal;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class ProductputawayImportExcelVO {
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty("库存状态")
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty("计量单位")
@DictFormat(DictTypeConstants.UOM)
private String uom;
}

59
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java

@ -0,0 +1,59 @@
package com.win.module.wms.controller.productputawayRequest.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.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 采购索赔申请子 Excel VO
*
* @author 超级管理员
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class ProductputawayImportVO {
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty("库存状态")
@DictFormat(DictTypeConstants.INVENTORY_STATUS)
private String inventoryStatus;
@ExcelProperty("从库位代码")
private String fromLocationCode;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty("计量单位")
@DictFormat(DictTypeConstants.UOM)
private String uom;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.productputawayRequest.vo;
import com.win.framework.excel.core.annotations.OnlyOne;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -44,6 +45,7 @@ public class ProductputawayRequestMainBaseVO {
private String toAreaCodes;
@Schema(description = "单据号")
@OnlyOne
private String number;
@Schema(description = "业务类型")

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainCreateReqVO.java

@ -1,12 +1,17 @@
package com.win.module.wms.controller.productputawayRequest.vo;
import com.win.framework.excel.core.annotations.SubObject;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
@Schema(description = "管理后台 - 制品上架申请主创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProductputawayRequestMainCreateReqVO extends ProductputawayRequestMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<ProductputawayRequestDetailCreateReqVO> subList;
}

36
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java

@ -2,6 +2,7 @@ package com.win.module.wms.controller.productscrapRequest;
import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.excel.core.util.ConvertUtil;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.excel.core.util.ConvertUtil;
import com.win.framework.excel.core.util.ExcelUtils;
@ -9,6 +10,10 @@ import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.productscrapRequest.vo.*;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO;
import io.swagger.v3.oas.annotations.Parameters;
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import com.win.module.wms.service.productscrapRequest.ProductscrapRequestMainService;
@ -22,6 +27,16 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
@ -30,6 +45,17 @@ import java.time.ZoneOffset;
import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success;
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.productscrapRequest.vo.*;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert;
import com.win.module.wms.service.productscrapRequest.ProductscrapRequestMainService;
import org.springframework.web.multipart.MultipartFile;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 制品报废申请主")
@ -138,7 +164,7 @@ public class ProductscrapRequestMainController {
}
@PostMapping("/import")
@Operation(summary = "导入要货计划")
@Operation(summary = "导入采购索赔基本信息")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@ -149,19 +175,17 @@ public class ProductscrapRequestMainController {
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<ProductscrapRequestMainImportVO> list = ExcelUtils.read(file, ProductscrapRequestMainImportVO.class);
List<ProductscrapRequestImportVO> list = ExcelUtils.read(file, ProductscrapRequestImportVO.class);
ConvertUtil<ProductscrapRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(ProductscrapRequestMainCreateReqVO.class);
List<ProductscrapRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<ProductscrapRequestMainImportErrorVO> errorList = productscrapRequestMainService.importProductscrapRequestMainList(createReqVOList, mode, updatePart);
List<ProductscrapRequestImportErrorVO> errorList = productscrapRequestMainService.importProductscrapRequestList(createReqVOList, 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")) + ".xlsx", "错误列表", errorList);
String url = ExcelUtils.writeLocalFile("采购索赔基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
}

26
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportErrorVO.java

@ -0,0 +1,26 @@
package com.win.module.wms.controller.productscrapRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
* 采购索赔申请子 Excel VO
*
* @author 超级管理员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProductscrapRequestImportErrorVO extends ProductscrapRequestImportVO {
@ExcelProperty(value = "导入状态", index = 0)
private String importStatus;
@ExcelProperty(value = "导入说明", index = 1)
private String importRemark;
}

65
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestImportVO.java

@ -0,0 +1,65 @@
package com.win.module.wms.controller.productscrapRequest.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 groovyjarjarantlr4.v4.runtime.misc.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 采购索赔申请子 Excel VO
*
* @author 超级管理员
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class ProductscrapRequestImportVO {
@ExcelProperty("包装号")
@NotBlank(message = "包装号不能为空")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
@NotBlank(message = "批次不能为空")
private String batch;
@ExcelProperty(value = "库存状态", converter = DictConvert.class)
@NotBlank(message = "库存状态不能为空")
@DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String inventoryStatus;
@ExcelProperty("物品代码")
@NotBlank(message = "物品代码不能为空")
private String itemCode;
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String uom;
@ExcelProperty("来源库位代码")
@NotBlank(message = "来源库位代码不能为空")
private String fromlocationcode;
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainCreateReqVO.java

@ -1,10 +1,9 @@
package com.win.module.wms.controller.productscrapRequest.vo;
import com.win.framework.excel.core.annotations.SubObject;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailCreateReqVO;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.List;

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

@ -10,9 +10,7 @@ import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.workstation.vo.WorkstationRespVO;
import com.win.module.wms.controller.workstation.vo.*;
import com.win.module.wms.convert.workstation.WorkstationConvert;
import com.win.module.wms.convert.workstation.WorkstationConvert;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.convert.workstation.WorkstationConvert;;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.workstation.WorkstationService;
@ -24,7 +22,6 @@ 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;
@ -32,7 +29,6 @@ import java.io.IOException;
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;

29
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventoryinitRequest/InventoryinitRequestDetailConvert.java

@ -1,12 +1,18 @@
package com.win.module.wms.convert.inventoryinitRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestDetailCreateReqVO;
import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestDetailExcelVO;
import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestDetailRespVO;
import com.win.module.wms.controller.inventoryinitRequest.vo.InventoryinitRequestDetailUpdateReqVO;
import com.win.module.wms.controller.inventoryinitRequest.vo.*;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailExcelVO;
import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestMainDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -18,6 +24,21 @@ import java.util.List;
*/
@Mapper
public interface InventoryinitRequestDetailConvert {
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
InventoryinitRequestMainImportErrorVO convert(InventoryinitRequestMainCreateReqVO mainVo, InventoryinitRequestDetailDO detailVo);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
})
InventoryinitRequestDetailExcelVO convert(InventoryinitRequestMainDO mainDO, InventoryinitRequestDetailDO detailDO);
InventoryinitRequestDetailConvert INSTANCE = Mappers.getMapper(InventoryinitRequestDetailConvert.class);

27
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java

@ -4,11 +4,17 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailCreateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailExcelVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailRespVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.*;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailExcelVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
@ -33,5 +39,18 @@ public interface ProductputawayRequestDetailConvert {
PageResult<ProductputawayRequestDetailRespVO> convertPage(PageResult<ProductputawayRequestDetailDO> page);
List<ProductputawayRequestDetailExcelVO> convertList02(List<ProductputawayRequestDetailDO> list);
List<ProductputawayRequestDetailDO> convertList03(List<ProductputawayRequestDetailCreateReqVO> list);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
})
ProductputawayRequestDetailExcelVO convert(ProductputawayRequestMainDO mainDO, ProductputawayRequestDetailDO detailDO);
ProductputawayImportErrorVO convert(ProductputawayRequestMainCreateReqVO mainVo, ProductputawayRequestDetailDO detailVo);
}

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java

@ -4,11 +4,15 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExcelVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainRespVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.*;
import com.win.module.wms.controller.purchaseclaimRequest.vo.*;
import com.win.module.wms.controller.workstation.vo.WorkstationImportExcelVo;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
@ -34,4 +38,8 @@ public interface ProductputawayRequestMainConvert {
List<ProductputawayRequestMainExcelVO> convertList02(List<ProductputawayRequestMainDO> list);
ProductputawayRequestMainDO convert(ProductputawayImportExcelVO bean);
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestDetailConvert.java

@ -1,10 +1,11 @@
package com.win.module.wms.convert.productscrapRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailCreateReqVO;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailExcelVO;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailRespVO;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailUpdateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailCreateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO;
import com.win.module.wms.controller.productscrapRequest.vo.*;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@ -35,4 +36,6 @@ public interface ProductscrapRequestDetailConvert {
List<ProductscrapRequestDetailDO> convertList03(List<ProductscrapRequestDetailCreateReqVO> list);
ProductscrapRequestImportErrorVO convert(ProductscrapRequestMainCreateReqVO mainVo, ProductscrapRequestDetailDO detailVo);
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventoryinitRequest/InventoryinitRequestMainDO.java

@ -51,7 +51,7 @@ public class InventoryinitRequestMainDO extends BaseDO {
/**
* 创建时间
*/
private LocalDateTime creationTime;
private LocalDateTime createTime;
/**
* 扩展属性
*/

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventoryinitRequest/InventoryinitRequestMainMapper.java

@ -26,7 +26,7 @@ public interface InventoryinitRequestMainMapper extends BaseMapperX<Inventoryini
.eqIfPresent(InventoryinitRequestMainDO::getNumber, reqVO.getNumber())
.eqIfPresent(InventoryinitRequestMainDO::getBusinessType, reqVO.getBusinessType())
.eqIfPresent(InventoryinitRequestMainDO::getRemark, reqVO.getRemark())
.betweenIfPresent(InventoryinitRequestMainDO::getCreationTime, reqVO.getCreationTime())
.betweenIfPresent(InventoryinitRequestMainDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(InventoryinitRequestMainDO::getCreator, reqVO.getCreator())
.betweenIfPresent(InventoryinitRequestMainDO::getRequestTime, reqVO.getRequestTime())
.betweenIfPresent(InventoryinitRequestMainDO::getDueTime, reqVO.getDueTime())
@ -49,7 +49,7 @@ public interface InventoryinitRequestMainMapper extends BaseMapperX<Inventoryini
.eqIfPresent(InventoryinitRequestMainDO::getNumber, reqVO.getNumber())
.eqIfPresent(InventoryinitRequestMainDO::getBusinessType, reqVO.getBusinessType())
.eqIfPresent(InventoryinitRequestMainDO::getRemark, reqVO.getRemark())
.betweenIfPresent(InventoryinitRequestMainDO::getCreationTime, reqVO.getCreationTime())
.betweenIfPresent(InventoryinitRequestMainDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(InventoryinitRequestMainDO::getCreator, reqVO.getCreator())
.betweenIfPresent(InventoryinitRequestMainDO::getRequestTime, reqVO.getRequestTime())
.betweenIfPresent(InventoryinitRequestMainDO::getDueTime, reqVO.getDueTime())

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestMainMapper.java

@ -8,6 +8,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExportReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -19,7 +20,9 @@ import java.util.List;
*/
@Mapper
public interface ProductputawayRequestMainMapper extends BaseMapperX<ProductputawayRequestMainDO> {
default ProductputawayRequestMainDO selectByNumber(String number) {
return selectOne(ProductputawayRequestMainDO::getNumber, number);
}
default PageResult<ProductputawayRequestMainDO> selectPage(ProductputawayRequestMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProductputawayRequestMainDO>()
.eqIfPresent(ProductputawayRequestMainDO::getSupplierCode, reqVO.getSupplierCode())

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRequest/ProductscrapRequestMainMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainExportReqVO;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO;
import org.apache.ibatis.annotations.Mapper;
/**

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java

@ -103,11 +103,12 @@ public class BalanceServiceImpl implements BalanceService {
*/
@Override
public List<BalanceDO> selectPackaging(String itemCode, String packingNumber, String batch, List<String> inventoryStatus, String locationCode) {
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("item_code", itemCode);
queryWrapper.eq("packing_number", packingNumber);
queryWrapper.eq("batch", batch);
queryWrapper.eq("inventory_status", inventoryStatus);
queryWrapper.in("inventory_status", inventoryStatus);
queryWrapper.eq("location_code", locationCode);
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if (!balanceDO.isEmpty()) {

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/enterprise/EnterpriseServiceImpl.java

@ -17,7 +17,7 @@ import com.win.module.wms.convert.enterprise.EnterpriseConvert;
import com.win.module.wms.dal.mysql.enterprise.EnterpriseMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.ENTERPRISE_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
* 企业 Service 实现类

172
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java

@ -1,26 +1,45 @@
package com.win.module.wms.service.inventoryinitRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert;
import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.util.*;
import com.win.module.wms.service.requestsetting.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.inventoryinitRequest.vo.*;
import com.win.module.wms.convert.inventoryinitRequest.InventoryinitRequestDetailConvert;
import com.win.module.wms.convert.inventoryinitRequest.InventoryinitRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventoryinitRequest.InventoryinitRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.mysql.inventoryinitRequest.InventoryinitRequestDetailMapper;
import com.win.module.wms.dal.mysql.inventoryinitRequest.InventoryinitRequestMainMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.*;
import com.win.module.wms.service.itembasic.*;
import com.win.module.wms.service.location.*;
import com.win.module.wms.service.itempackaging.*;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.INVENTORYINIT_REQUEST_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
import com.win.module.wms.service.recordsetting.*;
/**
* 库存初始化申请主 Service 实现类
@ -33,8 +52,30 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest
@Resource
private InventoryinitRequestMainMapper inventoryinitRequestMainMapper;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private RequestsettingService requestsettingService;
@Resource
private JobUtils jobUtils;
@Resource
private RecordsettingService recordsettingService;
@Resource
private InventoryinitRequestDetailMapper inventoryinitRequestDetailMapper;
@Resource
private ItempackagingService itempackagingService;
@Resource
private LocationService locationService;
@Resource
private ItembasicService itembasicService;
@Override
public Long createInventoryinitRequestMain(InventoryinitRequestMainCreateReqVO createReqVO) {
@ -67,7 +108,16 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest
throw exception(INVENTORYINIT_REQUEST_MAIN_NOT_EXISTS);
}
}
private void validatesInventoryinitRequestMainExists(Long id) {
if (id == null) {
return;
}
InventoryinitRequestMainDO inventoryinitRequestMainDO = inventoryinitRequestMainMapper.selectById(id);
if (inventoryinitRequestMainDO == null) {
throw exception(INVENTORYINIT_REQUEST_MAIN_NOT_EXISTS);
}
}
@Override
public InventoryinitRequestMainDO getInventoryinitRequestMain(Long id) {
return inventoryinitRequestMainMapper.selectById(id);
@ -91,35 +141,119 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest
return inventoryinitRequestMainMapper.selectList(exportReqVO);
}
@Override
@Transactional
public List<InventoryinitRequestMainImportErrorVO> importInventoryinitRequestMainList(List<InventoryinitRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<InventoryinitRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
String message = "";
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
InventoryinitRequestMainDO createObj = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO);
inventoryinitRequestMainMapper.insert(createObj);
if(mode != null) {
try {
validatesInventoryinitRequestMainExists(null);
} catch (Exception ex) {
isError = true;
message += ex.getMessage() + ",";
}
}
try {
RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("TransferDeliverRequest");
createReqVO.setAutoAgree(requestsetting.getAutoAgree());
createReqVO.setAutoCommit(requestsetting.getAutoCommit());
createReqVO.setAutoExecute(requestsetting.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord());
}catch (Exception ex) {
isError = true;
message += ex.getMessage() + ",";
}
try {
BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("InventoryInitialRequest");
createReqVO.setBusinessType(businesstype.getCode());
}catch (Exception ex) {
isError = true;
message += ex.getMessage() + ",";
}
List<InventoryinitRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventoryinitRequestDetailDO> subDOList = InventoryinitRequestDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (InventoryinitRequestDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
try{
LocationDO location = locationService.selectLocation(detailDO.getLocationCode());
detailDO.setAreaCode(location.getAreaCode());
detailDO.setLocationCode(location.getCode());
detailDO.setLocationGroupCode(location.getLocationGroupCode());
}catch (Exception ex) {
isError = true;
message += ex.getMessage() + ",";
}
try{
//TODO 传入的实体里没有itemcode detailDO.getItemCode()
ItembasicDO itembasic = itembasicService.selectItembasic(detailDO.getItemCode());
detailDO.setItemDesc1(itembasic.getDesc1());
detailDO.setItemDesc2(itembasic.getDesc2());
detailDO.setItemName(itembasic.getName());
detailDO.setUom(itembasic.getUom());
detailDO.setProjectCode(itembasic.getProject());
}catch (Exception ex) {
isError = true;
message += ex.getMessage() + ",";
}
try{
//TODO 传入的实体里没有itemcode detailDO.getItemCode()
ItempackagingDO itempackaging = itempackagingService.selectItemPackagingExist(detailDO.getItemCode());
detailDO.setStdPackUnit(itempackaging.getStdPackUnit());
detailDO.setStdPackQty(itempackaging.getStdPackQty());
}catch (Exception ex) {
isError = true;
message += ex.getMessage() + ",";
}
if(isError){
InventoryinitRequestMainImportErrorVO importVO = InventoryinitRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO);
importVO.setImportStatus("失败");
importVO.setImportRemark(message.substring(0, message.length() - 1));
errorList.add(importVO);
}else{
if(mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
createReqVO.setNumber(number);
detailDO.setNumber(createReqVO.getNumber());
detailDO.setMasterId(createReqVO.getId());
InventoryinitRequestMainDO createObj = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO);
inventoryinitRequestMainMapper.insert(createObj);
inventoryinitRequestDetailMapper.insertBatch(subDOList);
}
else if( mode != 2){
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
createReqVO.setNumber(number);
detailDO.setNumber(createReqVO.getNumber());
detailDO.setMasterId(createReqVO.getId());
InventoryinitRequestMainDO createObj = InventoryinitRequestMainConvert.INSTANCE.convert(createReqVO);
inventoryinitRequestMainMapper.updateById(createObj);
inventoryinitRequestDetailMapper.updateBatch(subDOList);
}
}
}
inventoryinitRequestDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

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

@ -1,10 +1,8 @@
package com.win.module.wms.service.itembasic;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
@ -19,12 +17,10 @@ import com.win.module.wms.dal.mysql.itembasic.ItembasicMapper;
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.ErrorCodeConstants.*;

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java

@ -223,7 +223,7 @@ public class ItempackagingServiceImpl implements ItempackagingService {
@Override
public ItempackagingDO selectItemPackagingExist(String pitemCode){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("itemcode",pitemCode);
queryWrapper.eq("item_code",pitemCode);
ItempackagingDO itempackagingDO = itempackagingMapper.selectOne(queryWrapper);
if(itempackagingDO != null && "TRUE".equals(itempackagingDO.getAvailable())){
return itempackagingDO;

24
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java

@ -2,10 +2,7 @@ package com.win.module.wms.service.productputawayRequest;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExportReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainPageReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.*;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import javax.validation.Valid;
@ -81,4 +78,23 @@ public interface ProductputawayRequestMainService {
* @return 分页列表
*/
PageResult<ProductputawayRequestMainDO> getProductputawayRequestMainSenior(CustomConditions conditions);
/**
* 批量导入物品基本信息
*
* @param importProductputaways 导入物品基本信息列表
* @param updatePart 是否支持更新
* @return 导入结果
*/
List<ProductputawayImportExcelVO> importProductputawayList(List<ProductputawayImportExcelVO> importProductputaways, Integer mode, boolean updatePart);
/**
* 批量导入采购索赔申请主信息
*
* @param datas 导入采购索赔申请主信息列表
* @param mode 导入模式1更新2追加3覆盖
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<ProductputawayImportErrorVO> importProductputawayRequestList(List<ProductputawayRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
}

252
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java

@ -1,24 +1,47 @@
package com.win.module.wms.service.productputawayRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.util.StrUtil;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.dict.dto.DictDataRespDTO;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestDetailMapper;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExportReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainPageReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.productputawayRequest.vo.*;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert;
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.service.businesstype.*;
import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import com.win.module.wms.convert.productputawayRequest.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import com.win.module.wms.service.location.*;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTPUTAWAY_REQUEST_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
import com.win.module.wms.service.recordsetting.*;
import com.win.module.wms.service.itembasic.*;
/**
* 制品上架申请主 Service 实现类
@ -31,7 +54,31 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
@Resource
private ProductputawayRequestMainMapper productputawayRequestMainMapper;
@Resource
private RequestsettingService requestsettingService;
@Resource
private ProductputawayRequestDetailMapper productputawayRequestDetailMapper;
@Resource
private ItembasicService itembasicService;
@Resource
private JobUtils jobUtils;
@Resource
private BusinesstypeService businesstypeService;
@Resource
private LocationService locationService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private DictDataApi dictDataApi;
@Override
public Long createProductputawayRequestMain(ProductputawayRequestMainCreateReqVO createReqVO) {
// 插入
@ -88,4 +135,193 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
public PageResult<ProductputawayRequestMainDO> getProductputawayRequestMainSenior(CustomConditions conditions) {
return productputawayRequestMainMapper.selectSenior(conditions);
}
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public List<ProductputawayImportExcelVO> importProductputawayList(List<ProductputawayImportExcelVO> importProductputaways, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(importProductputaways)) {
throw exception(WORKSTATION_IMPORT_LIST_IS_EMPTY);
}
List<ProductputawayImportExcelVO> errorList = new ArrayList<>();
importProductputaways.forEach(productputaway -> {
String massage = "";
// 校验,判断是否有不符合的原因
if(mode != null){
try{
validateProductputawayExists(null);
} catch(Exception ex){
massage += ex.getMessage() + ",";
}
if(StrUtil.isNotEmpty(massage)){
massage.substring(0,massage.length()-1);
errorList.add(productputaway);
}
// 判断如果不存在,在进行插入
if(errorList == null){
ProductputawayRequestMainDO existAccountcalendar = productputawayRequestMainMapper.selectByNumber(productputaway.getPackingNumber());
if (existAccountcalendar == null&& mode != 3) {
productputawayRequestMainMapper.insert(ProductputawayRequestMainConvert.INSTANCE.convert(productputaway));
}
else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新
ProductputawayRequestMainDO productputawayDo = ProductputawayRequestMainConvert.INSTANCE.convert(productputaway);
productputawayDo.setId(existAccountcalendar.getId());
productputawayRequestMainMapper.updateById(productputawayDo);
}
}
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
private void validateproductputawayForCreateOrUpdate(Long id,String code,String workshopCode,String productionLineCode,String available) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> {
// 校验code唯一
});
}
@VisibleForTesting
private void validateProductputawayExists(Long id) {
if (id == null) {
return;
}
ProductputawayRequestMainDO productputaway = productputawayRequestMainMapper.selectById(id);
if (productputaway == null) {
throw exception(PRODUCTPUTAWAY_REQUEST_NOT_EXISTS);
}
}
public String Isuom(String uom1, String uom2) {
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1);
String value = dictDataRespDTO.getLabel();
if(uom2.equals(value)){
return "ture";
}else {
throw new UtilException("计量单位"+uom2+"错误,应该是"+value);
}
}
public String isqty(BigDecimal qty1, BigDecimal qty2) {
if(qty1.compareTo(qty2) < 0){
return "ture";
} else {
throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1);
}
}
public List<ProductputawayImportErrorVO> importProductputawayRequestList(List<ProductputawayRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PRODUCTPUTAWAY_REQUEST_NOT_EXISTS);
}
List<ProductputawayImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
String massage = "";
boolean isError = false;
RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest");
createReqVO.setAutoCommit(requestsetting.getAutoCommit());
createReqVO.setAutoAgree(requestsetting.getAutoAgree());
createReqVO.setAutoExecute(requestsetting.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord());
List<ProductputawayRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<ProductputawayRequestDetailDO> subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (ProductputawayRequestDetailDO detailDO : subDOList) {
if (mode != null) {
try {
validateProductputawayExists(null);
} catch (Exception ex) {
massage += ex.getMessage() + ",";
}
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
try {
ItembasicDO item = itembasicService.selectItembasic(detailDO.getItemCode());
detailDO.setItemDesc1(item.getDesc1());
detailDO.setItemDesc2(item.getDesc2());
detailDO.setItemName(item.getName());
detailDO.setProjectCode(item.getProject());
try{
Isuom(item.getUom(),detailDO.getUom());
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
locationService.selectLocation(detailDO.getFromLocationCode());
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
BusinesstypeDO bus = businesstypeService.selectBusinesstypeExist("ProductPutawayRequest");
createReqVO.setBusinessType(bus.getCode());
createReqVO.setFromLocationTypes(bus.getOutLocationTypes());
createReqVO.setToLocationTypes(bus.getInLocationTypes());
createReqVO.setFromAreaCodes(bus.getOutAreaCodes());
createReqVO.setToAreaCodes(bus.getInAreaCodes());
//TODO TB ---TB1 效验业务类型相关属性
try{
jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),bus);
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDO.getInventoryStatus());
String value = dictDataRespDTO.getValue();
String[] businessArray = value.split(",");
List<String> business = Arrays.asList(businessArray);
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber(),
detailDO.getBatch(), detailDO.getFromLocationCode(), business);
try{
BalanceDO blance1 = balance.get(0);
isqty(detailDO.getQty(),blance1.getQty());
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
if(isError) {
ProductputawayImportErrorVO importVO = ProductputawayRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO);
importVO.setImportStatus("失败");
importVO.setImportRemark(massage.substring(0, massage.length() - 1));
errorList.add(importVO);
}
if(!isError) {
if( mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
createReqVO.setNumber(number);
ProductputawayRequestMainDO createObj = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO);
productputawayRequestMainMapper.insert(createObj);
productputawayRequestDetailMapper.insertBatch(subDOList);
}
else if(mode != 2){
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
createReqVO.setNumber(number);
ProductputawayRequestMainDO createObj = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO);
productputawayRequestMainMapper.updateById(createObj);
productputawayRequestDetailMapper.updateBatch(subDOList);
}
}
}
}
});
return errorList;
}
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java

@ -1,6 +1,13 @@
package com.win.module.wms.service.productscrapRequest;
import java.util.*;
import javax.validation.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.productscrapRequest.vo.*;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productscrapRequest.vo.*;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
@ -80,11 +87,12 @@ public interface ProductscrapRequestMainService {
/**
* 批量导入采购索赔申请主信息
*
* @param datas 导入采购索赔申请主信息列表
* @param mode 导入模式1更新2追加3覆盖
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<ProductscrapRequestMainImportErrorVO> importProductscrapRequestMainList(List<ProductscrapRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
public List<ProductscrapRequestImportErrorVO> importProductscrapRequestList(List<ProductscrapRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
}

210
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java

@ -1,7 +1,43 @@
package com.win.module.wms.service.productscrapRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.dict.dto.DictDataRespDTO;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.productscrapRequest.vo.*;
import com.win.module.wms.dal.mysql.productscrapRequest.*;
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestDetailConvert;
import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert;
import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import com.win.module.wms.service.itembasic.ItembasicService.*;
import java.math.BigDecimal;
import java.util.*;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productscrapRequest.vo.*;
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestDetailConvert;
@ -19,8 +55,7 @@ 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.ErrorCodeConstants.PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
* 制品报废申请主 Service 实现类
@ -37,6 +72,19 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
@Resource
private ProductscrapRequestDetailMapper productscrapRequestDetailMapper;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private DictDataApi dictDataApi;
@Resource
private JobUtils jobUtils;
@Resource
private ItembasicService itembasicService;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) {
// 插入
@ -46,6 +94,18 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
return productscrapRequestMain.getId();
}
@VisibleForTesting
private void validateProductscrapExists(Long id) {
if (id == null) {
return;
}
ProductscrapRequestMainDO productscrap = productscrapRequestMainMapper.selectById(id);
if (productscrap == null) {
throw exception(PRODUCTSCRAP_REQUEST_NOT_EXISTS);
}
}
@Override
public void updateProductscrapRequestMain(ProductscrapRequestMainUpdateReqVO updateReqVO) {
// 校验存在
@ -91,37 +151,141 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
public List<ProductscrapRequestMainDO> getProductscrapRequestMainList(ProductscrapRequestMainExportReqVO exportReqVO) {
return productscrapRequestMainMapper.selectList(exportReqVO);
}
@Override
public List<ProductscrapRequestMainImportErrorVO> importProductscrapRequestMainList(List<ProductscrapRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public String Isuom(String uom1, String uom2) {
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1);
String value = dictDataRespDTO.getLabel();
if(uom2.equals(value)){
return "ture";
}else {
throw new UtilException("计量单位"+uom2+"错误,应该是"+value);
}
}
public String isqty(BigDecimal qty1, BigDecimal qty2) {
if(qty1.compareTo(qty2) < 0){
return "ture";
} else {
throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1);
}
}
public List<ProductscrapRequestImportErrorVO> importProductscrapRequestList(List<ProductscrapRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
throw exception(PRODUCTSCRAP_REQUEST_NOT_EXISTS);
}
List<ProductscrapRequestMainImportErrorVO> errorList = new ArrayList<>();
List<ProductscrapRequestImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String massage = "";
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
ProductscrapRequestMainDO createObj = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO);
productscrapRequestMainMapper.insert(createObj);
List<ProductscrapRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<ProductscrapRequestDetailDO> subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (ProductscrapRequestDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
if (mode != null) {
try{
validateProductscrapExists(null);
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
ItembasicDO itembasic = itembasicService.selectItembasic(detailDO.getItemCode());
detailDO.setItemDesc1(itembasic.getDesc1());
detailDO.setItemDesc2(itembasic.getDesc2());
detailDO.setItemName(itembasic.getName());
detailDO.setProjectCode(itembasic.getProject());
try{
Isuom(detailDO.getUom(),itembasic.getUom());
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest");
createReqVO.setBusinessType(businesstype.getCode());
createReqVO.setFromLocationTypes(businesstype.getInLocationTypes());
createReqVO.setFromAreaCodes(businesstype.getInAreaCodes());
try{
jobUtils.selectItembasicExist(itembasic.getType(),businesstype);
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),businesstype);
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(),businesstype);
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDO.getInventoryStatus());
String value = dictDataRespDTO.getValue();
String[] businessArray = value.split(",");
List<String> business = Arrays.asList(businessArray);
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(),detailDO.getPackingNumber(),
detailDO.getBatch(),detailDO.getFromLocationCode(),business);
try{
BalanceDO blance1 = balance.get(0);
isqty(detailDO.getQty(),blance1.getQty());
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
if(isError) {
ProductscrapRequestImportErrorVO importVO = ProductscrapRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO);
importVO.setImportStatus("失败");
importVO.setImportRemark(massage.substring(0, massage.length() - 1));
errorList.add(importVO);
}
if(!isError) {
detailDO.setNumber(createReqVO.getNumber());
detailDO.setMasterId(createReqVO.getId());
}
if(!errorList.isEmpty()){
// 判断如果不存在,在进行插入
RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("ProductPutawayRequest");
if(requestsetting != null) {
createReqVO.setAutoCommit(requestsetting.getAutoCommit());
createReqVO.setAutoAgree(requestsetting.getAutoAgree());
createReqVO.setAutoExecute(requestsetting.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord());
}
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
createReqVO.setNumber(number);
ProductscrapRequestMainDO createObj = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO);
productscrapRequestMainMapper.insert(createObj);
productscrapRequestDetailMapper.insertBatch(subDOList);
}
}
}
productscrapRequestDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingServiceImpl.java

@ -247,7 +247,7 @@ public class RequestsettingServiceImpl implements RequestsettingService {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("code",pcode);
RequestsettingDO requestsettingDO = requestsettingMapper.selectOne(queryWrapper);
if(requestsettingDO != null && "TRUE".equals(requestsettingDO.getAutoAgree())){
if(requestsettingDO != null && "TRUE".equals(requestsettingDO.getAvailable())){
return requestsettingDO;
}else {
throw exception(REQUESTSETTING_NOT_EXISTS);

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

@ -108,7 +108,7 @@ public class WarehouseServiceImpl implements WarehouseService {
try {
validateWarehouseExists(null);
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
massage += ex.getMessage() + ",";
}
try {
validateCodeExists(null,warehouse.getCode());

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java

@ -374,7 +374,7 @@ public class JobUtils {
if (ifOutLocationType == true) {
return true;
} else {
throw new UtilException("出库库位" + plocationCode + "的库位类型" + locationDO.getType() + "与业务类型" +
throw new UtilException("出库库位" + plocationCode + "的库位类型" + locationDO.getType() + "与业务类型与业务类型" +
businesstypeDO.getName() + "的出库库位类型" + businesstypeDO.getOutLocationTypes() + "不一致");
}
}

Loading…
Cancel
Save