Browse Source

导入功能开发

master
叶佳兴 2 years ago
parent
commit
0c528fa650
  1. 1
      win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java
  2. 82
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/CountRequestMainController.java
  3. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainCreateReqVO.java
  4. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportErrorVO.java
  5. 51
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportVO.java
  6. 83
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java
  7. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java
  8. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainCreateReqVO.java
  9. 26
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportErrorVO.java
  10. 46
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportVO.java
  11. 78
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/UnplannedreceiptRequestMainController.java
  12. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainCreateReqVO.java
  13. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportErrorVO.java
  14. 51
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportVO.java
  15. 26
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countRequest/CountRequestDetailConvert.java
  16. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java
  17. 26
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java
  18. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java
  19. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java
  20. 21
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/production/ProductionDetailConvert.java
  21. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productscrapRequest/ProductscrapRequestDetailConvert.java
  22. 29
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchase/PurchaseDetailConvert.java
  23. 17
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanDetailConvert.java
  24. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java
  25. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java
  26. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRequest/RepleinshRequestDetailConvert.java
  27. 29
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/sale/SaleDetailConvert.java
  28. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestDetailConvert.java
  29. 29
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueRequest/TransferissueRequestDetailConvert.java
  30. 30
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/unplannedreceiptRequest/UnplannedreceiptRequestDetailConvert.java
  31. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkDetailConvert.java
  32. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestDetailDO.java
  33. 24
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java
  34. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java
  35. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverPlan/DeliverPlanMainMapper.java
  36. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/demandforecasting/DemandforecastingMainMapper.java
  37. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/production/ProductionMainMapper.java
  38. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java
  39. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java
  40. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java
  41. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/sale/SaleMainMapper.java
  42. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestMainMapper.java
  43. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java
  44. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java
  45. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainService.java
  46. 158
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java
  47. 169
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java
  48. 163
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java
  49. 351
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java
  50. 130
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java
  51. 195
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java
  52. 142
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java
  53. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java
  54. 201
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java
  55. 111
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java
  56. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java
  57. 137
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java
  58. 115
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/sale/SaleMainServiceImpl.java
  59. 150
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java
  60. 24
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java
  61. 177
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java
  62. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainService.java
  63. 174
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainServiceImpl.java
  64. 165
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java

1
win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java

@ -136,6 +136,7 @@ public enum RuleCodeEnum {
INVENTORY_CHANGE_RECORD("InventoryChangeRecord"), // 库存修改记录
INVENTORY_MOVE_RECORD("InventoryMoveRecord"), // 库存转移记录
ASN_NUMBER("AsnNumber"), // 发货单号
TRANSFER_DELIVER_REQUEST("TransferDeliverRequest"), // 调拨发出申请单据号
INVENTORY_TRANSACTION("InventoryTransaction"), // 库存事务
TRANSFER_LOG("TransferLog"), // 库存转移日志
;

82
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/CountRequestMainController.java

@ -1,35 +1,36 @@
package com.win.module.wms.controller.countRequest;
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.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;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.countRequest.vo.*;
import org.springframework.web.bind.annotation.*;
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 com.win.module.wms.convert.countRequest.CountRequestMainConvert;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.module.wms.service.countRequest.CountRequestMainService;
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.validation.*;
import javax.servlet.http.*;
import java.util.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.pojo.CommonResult;
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.countRequest.vo.*;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.module.wms.convert.countRequest.CountRequestMainConvert;
import com.win.module.wms.service.countRequest.CountRequestMainService;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 盘点申请主")
@RestController
@ -123,4 +124,43 @@ public class CountRequestMainController {
ExcelUtils.write(response, "盘点申请主.xls", "数据", CountRequestMainExcelVO.class, datas);
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入要货计划信息模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<CountRequestMainImportVO> 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);
// 输出
ExcelUtils.write(response, "要货计划信息导入模板.xlsx", "要货计划信息列表", CountRequestMainImportVO.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:purchase-plan-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<CountRequestMainImportVO> list = ExcelUtils.read(file, CountRequestMainImportVO.class);
ConvertUtil<CountRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(CountRequestMainCreateReqVO.class);
List<CountRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<CountRequestMainImportErrorVO> errorList = countRequestMainService.importCountRequestMainList(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);
}
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainCreateReqVO.java

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

25
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportErrorVO.java

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

51
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainImportVO.java

@ -0,0 +1,51 @@
package com.win.module.wms.controller.countRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 采购索赔申请子 Excel VO
*
* @author 超级管理员
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class CountRequestMainImportVO {
//主表数据
@ExcelProperty("计划单号")
private String planNumber;
@ExcelProperty("阶段")
private String stage;
@ExcelProperty("仓库代码")
private String warehouseCode;
//子表数据
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("包装号")
private String fromPackingNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty("器具号")
private String fromContainerNumber;
@ExcelProperty("库位代码")
private String locationCode;
@ExcelProperty("库存状态")
private String inventoryStatus;
@ExcelProperty("数量")
private String qty;
@ExcelProperty("计量单位")
private String uom;
}

83
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java

@ -1,35 +1,36 @@
package com.win.module.wms.controller.transferissueRequest;
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.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;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.transferissueRequest.vo.*;
import org.springframework.web.bind.annotation.*;
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 com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import com.win.module.wms.service.transferissueRequest.TransferissueRequestMainService;
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.validation.*;
import javax.servlet.http.*;
import java.util.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.pojo.CommonResult;
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.transferissueRequest.vo.*;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert;
import com.win.module.wms.service.transferissueRequest.TransferissueRequestMainService;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 调拨出库申请主")
@RestController
@ -118,4 +119,44 @@ public class TransferissueRequestMainController {
ExcelUtils.write(response, "调拨出库申请主.xls", "数据", TransferissueRequestMainExcelVO.class, datas);
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入调拨出库申请信息模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<TransferissueRequestMainImportVO> 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);
// 输出
ExcelUtils.write(response, "调拨出库申请信息导入模板.xlsx", "调拨出库申请信息列表", TransferissueRequestMainImportVO.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:purchase-plan-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<TransferissueRequestMainImportVO> list = ExcelUtils.read(file, TransferissueRequestMainImportVO.class);
ConvertUtil<TransferissueRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(TransferissueRequestMainCreateReqVO.class);
List<TransferissueRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<TransferissueRequestMainImportErrorVO> errorList = transferissueRequestMainService.importTransferissueRequestMainList(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);
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java

@ -1,13 +1,12 @@
package com.win.module.wms.controller.transferissueRequest.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainCreateReqVO.java

@ -1,12 +1,19 @@
package com.win.module.wms.controller.transferissueRequest.vo;
import lombok.*;
import com.win.framework.excel.core.annotations.SubObject;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.List;
@Schema(description = "管理后台 - 调拨出库申请主创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class TransferissueRequestMainCreateReqVO extends TransferissueRequestMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<TransferissueRequestDetailCreateReqVO> subList;
}

26
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportErrorVO.java

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

46
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainImportVO.java

@ -0,0 +1,46 @@
package com.win.module.wms.controller.transferissueRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 采购索赔申请子 Excel VO
*
* @author 超级管理员
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class TransferissueRequestMainImportVO {
//主表数据
@ExcelProperty("承运商")
private String carrierCode;
@ExcelProperty("从月台代码")
private String fromDockCode;
@ExcelProperty("运输方式")
private String transferMode;
@ExcelProperty("车牌号")
private String vehiclePlateNumber;
//子表数据
@ExcelProperty("来源库位")
private String fromLocationCode;
@ExcelProperty("零件号")
private String itemCode;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty("库存状态")
private String inventoryStatus;
@ExcelProperty("目标库位")
private String toLocationCode;
}

78
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/UnplannedreceiptRequestMainController.java

@ -1,32 +1,39 @@
package com.win.module.wms.controller.unplannedreceiptRequest;
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.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;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.*;
import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestDetailConvert;
import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestMainConvert;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO;
import com.win.module.wms.service.unplannedreceiptRequest.UnplannedreceiptRequestDetailService;
import com.win.module.wms.service.unplannedreceiptRequest.UnplannedreceiptRequestMainService;
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 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.util.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.pojo.CommonResult;
import java.time.LocalDateTime;
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.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO;
import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestMainConvert;
import com.win.module.wms.service.unplannedreceiptRequest.UnplannedreceiptRequestMainService;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 计划外入库申请主")
@RestController
@ -141,4 +148,43 @@ public class UnplannedreceiptRequestMainController {
return success(result);
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入要货计划信息模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<UnplannedreceiptRequestMainImportVO> 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);
// 输出
ExcelUtils.write(response, "要货计划信息导入模板.xlsx", "要货计划信息列表", UnplannedreceiptRequestMainImportVO.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:purchase-plan-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<UnplannedreceiptRequestMainImportVO> list = ExcelUtils.read(file, UnplannedreceiptRequestMainImportVO.class);
ConvertUtil<UnplannedreceiptRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(UnplannedreceiptRequestMainCreateReqVO.class);
List<UnplannedreceiptRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<UnplannedreceiptRequestMainImportErrorVO> errorList = unplannedreceiptRequestMainService.importUnplannedreceiptRequestMainList(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);
}
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainCreateReqVO.java

@ -1,12 +1,19 @@
package com.win.module.wms.controller.unplannedreceiptRequest.vo;
import lombok.*;
import com.win.framework.excel.core.annotations.SubObject;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.List;
@Schema(description = "管理后台 - 计划外入库申请主创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class UnplannedreceiptRequestMainCreateReqVO extends UnplannedreceiptRequestMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<UnplannedreceiptRequestDetailCreateReqVO> subList;
}

25
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportErrorVO.java

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

51
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/unplannedreceiptRequest/vo/UnplannedreceiptRequestMainImportVO.java

@ -0,0 +1,51 @@
package com.win.module.wms.controller.unplannedreceiptRequest.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 采购索赔申请子 Excel VO
*
* @author 超级管理员
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class UnplannedreceiptRequestMainImportVO {
//主表数据
//子表数据
@ExcelProperty("零件号")
private String itemCode;
@ExcelProperty("包装号")
private String packingNumber;
@ExcelProperty("器具号")
private String containerNumber;
@ExcelProperty("批次")
private String batch;
@ExcelProperty("库存状态")
private String inventoryStatus;
@ExcelProperty("数量")
private BigDecimal qty;
@ExcelProperty("记录单位")
private String uom;
@ExcelProperty("到货日期")
private LocalDateTime arriveDate;
@ExcelProperty("生产日期")
private LocalDateTime produceDate;
@ExcelProperty("过期日期")
private LocalDateTime expireDate;
@ExcelProperty("目标库位")
private String toLocationCode;
@ExcelProperty("原因")
private String reason;
}

26
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countRequest/CountRequestDetailConvert.java

@ -1,16 +1,15 @@
package com.win.module.wms.convert.countRequest;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.countRequest.vo.CountRequestDetailCreateReqVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestDetailExcelVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestDetailRespVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestDetailUpdateReqVO;
import com.win.module.wms.controller.countRequest.vo.*;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO;
import java.util.List;
/**
* 盘点申请子 Convert
@ -34,4 +33,15 @@ public interface CountRequestDetailConvert {
List<CountRequestDetailExcelVO> convertList02(List<CountRequestDetailDO> list);
List<CountRequestDetailDO> convertList03(List<CountRequestDetailCreateReqVO> list);
CountRequestDetailCreateReqVO convert1(CountRequestDetailDO bean);
CountRequestDetailExcelVO convert(CountRequestMainDO mainDO, CountRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
CountRequestMainImportErrorVO convert(CountRequestMainCreateReqVO mainVo, CountRequestDetailCreateReqVO detailVo);
}

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.deliverPlan;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanDetailCreateReqVO;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanDetailExcelVO;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanDetailRespVO;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanDetailUpdateReqVO;
import com.win.module.wms.controller.deliverPlan.vo.*;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,16 @@ public interface DeliverPlanDetailConvert {
List<DeliverPlanDetailDO> convertList03(List<DeliverPlanDetailCreateReqVO> list);
DeliverPlanDetailCreateReqVO convert1(DeliverPlanDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
DeliverPlanDetailExcelVO convert(DeliverPlanMainDO mainDO, DeliverPlanDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
DeliverPlanMainImportErrorVO convert(DeliverPlanMainCreateReqVO mainVo, DeliverPlanDetailCreateReqVO detailVo);
}

26
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.demandforecasting;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingDetailCreateReqVO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingDetailExcelVO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingDetailRespVO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingDetailUpdateReqVO;
import com.win.module.wms.controller.demandforecasting.vo.*;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDetailDO;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,22 @@ public interface DemandforecastingDetailConvert {
List<DemandforecastingDetailDO> convertList03(List<DemandforecastingDetailCreateReqVO> list);
DemandforecastingDetailCreateReqVO convert1(DemandforecastingDetailDO bean);
@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"),
@Mapping(source = "mainDO.available", target = "available"),
})
DemandforecastingDetailExcelVO convert(DemandforecastingMainDO mainDO, DemandforecastingDetailDO detailDO);
@Mappings({
// @Mapping(source = "mainVo.number", target = "number"),
})
DemandforecastingImportErrorVO convert(DemandforecastingMainCreateReqVO mainVo, DemandforecastingDetailCreateReqVO detailVo);
}

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.inventorychangeRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailCreateReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailExcelVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailRespVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestDetailUpdateReqVO;
import com.win.module.wms.controller.inventorychangeRequest.vo.*;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,16 @@ public interface InventorychangeRequestDetailConvert {
List<InventorychangeRequestDetailDO> convertList03(List<InventorychangeRequestDetailCreateReqVO> list);
InventorychangeRequestDetailCreateReqVO convert1(InventorychangeRequestDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
InventorychangeRequestDetailExcelVO convert(InventorychangeRequestMainDO mainDO, InventorychangeRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailCreateReqVO detailVo);
}

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorymoveRequest/InventorymoveRequestDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.inventorymoveRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailCreateReqVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailExcelVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailRespVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestDetailUpdateReqVO;
import com.win.module.wms.controller.inventorymoveRequest.vo.*;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,16 @@ public interface InventorymoveRequestDetailConvert {
List<InventorymoveRequestDetailDO> convertList03(List<InventorymoveRequestDetailCreateReqVO> list);
InventorymoveRequestDetailCreateReqVO convert1(InventorymoveRequestDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
InventorymoveRequestDetailExcelVO convert(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
InventorymoveRequestMainImportErrorVO convert(InventorymoveRequestMainCreateReqVO mainVo, InventorymoveRequestDetailCreateReqVO detailVo);
}

21
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/production/ProductionDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.production;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.production.vo.ProductionDetailCreateReqVO;
import com.win.module.wms.controller.production.vo.ProductionDetailExcelVO;
import com.win.module.wms.controller.production.vo.ProductionDetailRespVO;
import com.win.module.wms.controller.production.vo.ProductionDetailUpdateReqVO;
import com.win.module.wms.controller.production.vo.*;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,17 @@ public interface ProductionDetailConvert {
List<ProductionDetailDO> convertList03(List<ProductionDetailCreateReqVO> list);
ProductionDetailCreateReqVO convert1(ProductionDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
ProductionDetailExcelVO convert(ProductionMainDO mainDO, ProductionDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
ProductionMainImportErrorVO convert(ProductionMainCreateReqVO mainVo, ProductionDetailCreateReqVO detailVo);
}

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

@ -1,13 +1,12 @@
package com.win.module.wms.convert.productscrapRequest;
import com.win.framework.common.pojo.PageResult;
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 com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -38,4 +37,16 @@ public interface ProductscrapRequestDetailConvert {
ProductscrapRequestImportErrorVO convert(ProductscrapRequestMainCreateReqVO mainVo, ProductscrapRequestDetailDO detailVo);
ProductscrapRequestDetailCreateReqVO convert1(ProductscrapRequestDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
ProductscrapRequestDetailExcelVO convert(ProductscrapRequestMainDO mainDO, ProductscrapRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
ProductscrapRequestMainImportErrorVO convert(ProductscrapRequestMainCreateReqVO mainVo, ProductscrapRequestDetailCreateReqVO detailVo);
}

29
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchase/PurchaseDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.purchase;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailCreateReqVO;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailExcelVO;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailRespVO;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailUpdateReqVO;
import com.win.module.wms.controller.purchase.vo.*;
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,25 @@ public interface PurchaseDetailConvert {
List<PurchaseDetailDO> convertList03(List<PurchaseDetailCreateReqVO> list);
PurchaseDetailCreateReqVO convert1(PurchaseDetailDO bean);
@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"),
@Mapping(source = "mainDO.available", target = "available"),
@Mapping(source = "mainDO.status", target = "status"),
@Mapping(source = "mainDO.concurrencyStamp", target = "concurrencyStamp"),
})
PurchaseDetailExcelVO convert( PurchaseMainDO mainDO, PurchaseDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
PurchaseMainImportErrorVO convert( PurchaseMainCreateReqVO mainVo, PurchaseDetailCreateReqVO detailVo);
}

17
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.purchasePlan;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailCreateReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailExcelVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailRespVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailUpdateReqVO;
import com.win.module.wms.controller.purchasePlan.vo.*;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,13 @@ public interface PurchasePlanDetailConvert {
List<PurchasePlanDetailDO> convertList03(List<PurchasePlanDetailCreateReqVO> list);
PurchasePlanDetailCreateReqVO convert1(PurchasePlanDetailDO bean);
PurchasePlanDetailExcelVO convert(PurchasePlanMainDO mainDO, PurchasePlanDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
PurchasePlanMainImportErrorVO convert(PurchasePlanMainCreateReqVO mainVo,PurchasePlanDetailCreateReqVO detailVo);
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java

@ -26,6 +26,7 @@ public interface PurchaseclaimRequestDetailConvert {
PurchaseclaimRequestDetailDO convert(PurchaseclaimRequestDetailUpdateReqVO bean);
PurchaseclaimRequestDetailRespVO convert(PurchaseclaimRequestDetailDO bean);
PurchaseclaimRequestDetailCreateReqVO convert1(PurchaseclaimRequestDetailDO bean);
List<PurchaseclaimRequestDetailRespVO> convertList(List<PurchaseclaimRequestDetailDO> list);

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.purchasereceiptRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailCreateReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailExcelVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailRespVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestDetailUpdateReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.*;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,16 @@ public interface PurchasereceiptRequestDetailConvert {
List<PurchasereceiptRequestDetailDO> convertList03(List<PurchasereceiptRequestDetailCreateReqVO> list);
PurchasereceiptRequestDetailCreateReqVO convert1(PurchasereceiptRequestDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
PurchasereceiptRequestDetailExcelVO convert(PurchasereceiptRequestMainDO mainDO, PurchasereceiptRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
PurchasereceiptRequestMainImportErrorVO convert( PurchasereceiptRequestMainCreateReqVO mainVo, PurchasereceiptRequestDetailCreateReqVO detailVo);
}

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/repleinshRequest/RepleinshRequestDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.repleinshRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailCreateReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailExcelVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailRespVO;
import com.win.module.wms.controller.repleinshRequest.vo.RepleinshRequestDetailUpdateReqVO;
import com.win.module.wms.controller.repleinshRequest.vo.*;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestDetailDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,16 @@ public interface RepleinshRequestDetailConvert {
List<RepleinshRequestDetailDO> convertList03(List<RepleinshRequestDetailCreateReqVO> list);
RepleinshRequestDetailCreateReqVO convert1(RepleinshRequestDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
RepleinshRequestDetailExcelVO convert(RepleinshRequestMainDO mainDO, RepleinshRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
RepleinshRequestMainImportErrorVO convert(RepleinshRequestMainCreateReqVO mainVo, RepleinshRequestDetailCreateReqVO detailVo);
}

29
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/sale/SaleDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.sale;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.sale.vo.SaleDetailCreateReqVO;
import com.win.module.wms.controller.sale.vo.SaleDetailExcelVO;
import com.win.module.wms.controller.sale.vo.SaleDetailRespVO;
import com.win.module.wms.controller.sale.vo.SaleDetailUpdateReqVO;
import com.win.module.wms.controller.sale.vo.*;
import com.win.module.wms.dal.dataobject.sale.SaleDetailDO;
import com.win.module.wms.dal.dataobject.sale.SaleMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,25 @@ public interface SaleDetailConvert {
List<SaleDetailDO> convertList03(List<SaleDetailCreateReqVO> list);
SaleDetailCreateReqVO convert1(SaleDetailDO bean);
@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"),
@Mapping(source = "mainDO.available", target = "available"),
@Mapping(source = "mainDO.status", target = "status"),
@Mapping(source = "mainDO.concurrencyStamp", target = "concurrencyStamp"),
})
SaleDetailExcelVO convert(SaleMainDO mainDO, SaleDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
SaleMainImportErrorVO convert(SaleMainCreateReqVO mainVo, SaleDetailCreateReqVO detailVo);
}

25
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/supplierdeliverRequest/SupplierdeliverRequestDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.supplierdeliverRequest;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailCreateReqVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailExcelVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailRespVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailUpdateReqVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.*;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,21 @@ public interface SupplierdeliverRequestDetailConvert {
List<SupplierdeliverRequestDetailDO> convertList03(List<SupplierdeliverRequestDetailCreateReqVO> list);
SupplierdeliverRequestDetailCreateReqVO convert1(SupplierdeliverRequestDetailDO bean);
@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"),
})
SupplierdeliverRequestDetailExcelVO convert(SupplierdeliverRequestMainDO mainDO, SupplierdeliverRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
SupplierdeliverRequestMainImportErrorVO convert(SupplierdeliverRequestMainCreateReqVO mainVo, SupplierdeliverRequestDetailCreateReqVO detailVo);
}

29
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueRequest/TransferissueRequestDetailConvert.java

@ -1,16 +1,15 @@
package com.win.module.wms.convert.transferissueRequest;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailCreateReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailExcelVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailRespVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailUpdateReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.*;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO;
import java.util.List;
/**
* 调拨出库申请子 Convert
@ -34,4 +33,18 @@ public interface TransferissueRequestDetailConvert {
List<TransferissueRequestDetailExcelVO> convertList02(List<TransferissueRequestDetailDO> list);
List<TransferissueRequestDetailDO> convertList03(List<TransferissueRequestDetailCreateReqVO> list);
TransferissueRequestDetailCreateReqVO convert1(TransferissueRequestDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
TransferissueRequestDetailExcelVO convert(TransferissueRequestMainDO mainDO, TransferissueRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
TransferissueRequestMainImportErrorVO convert(TransferissueRequestMainCreateReqVO mainVo, TransferissueRequestDetailCreateReqVO detailVo);
}

30
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/unplannedreceiptRequest/UnplannedreceiptRequestDetailConvert.java

@ -1,16 +1,15 @@
package com.win.module.wms.convert.unplannedreceiptRequest;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestDetailCreateReqVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestDetailExcelVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestDetailRespVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestDetailUpdateReqVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.*;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO;
import java.util.List;
/**
* 计划外入库申请子 Convert
@ -34,4 +33,19 @@ public interface UnplannedreceiptRequestDetailConvert {
List<UnplannedreceiptRequestDetailExcelVO> convertList02(List<UnplannedreceiptRequestDetailDO> list);
List<UnplannedreceiptRequestDetailDO> convertList03(List<UnplannedreceiptRequestDetailCreateReqVO> list);
UnplannedreceiptRequestDetailCreateReqVO convert1(UnplannedreceiptRequestDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
UnplannedreceiptRequestDetailExcelVO convert(UnplannedreceiptRequestMainDO mainDO, UnplannedreceiptRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
UnplannedreceiptRequestMainImportErrorVO convert(UnplannedreceiptRequestMainCreateReqVO mainVo, UnplannedreceiptRequestDetailCreateReqVO detailVo);
}

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkDetailConvert.java

@ -1,12 +1,12 @@
package com.win.module.wms.convert.work;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.work.vo.WorkDetailCreateReqVO;
import com.win.module.wms.controller.work.vo.WorkDetailExcelVO;
import com.win.module.wms.controller.work.vo.WorkDetailRespVO;
import com.win.module.wms.controller.work.vo.WorkDetailUpdateReqVO;
import com.win.module.wms.controller.work.vo.*;
import com.win.module.wms.dal.dataobject.work.WorkDetailDO;
import com.win.module.wms.dal.dataobject.work.WorkMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -35,4 +35,19 @@ public interface WorkDetailConvert {
List<WorkDetailDO> convertList03(List<WorkDetailCreateReqVO> list);
WorkDetailCreateReqVO convert1(WorkDetailDO bean);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
WorkDetailExcelVO convert(WorkMainDO mainDO, WorkDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
WorkMainImportErrorVO convert( WorkMainCreateReqVO mainVo, WorkDetailCreateReqVO detailVo);
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inventorymoveRequest/InventorymoveRequestDetailDO.java

@ -1,12 +1,12 @@
package com.win.module.wms.dal.dataobject.inventorymoveRequest;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sun.xml.bind.v2.TODO;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
/**
* 库存转移申请子 DO

24
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java

@ -1,22 +1,12 @@
package com.win.module.wms.dal.dataobject.purchase;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sun.xml.bind.v2.TODO;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
/**
* 采购订单子 DO
@ -104,7 +94,7 @@ public class PurchaseDetailDO extends BaseDO {
/**
* 主表ID
*/
private String masterId;
private Long masterId;
/**
* 单据号
*/
@ -140,7 +130,7 @@ public class PurchaseDetailDO extends BaseDO {
*
* 枚举 {@link TODO purchase_order_detail_status 对应的类}
*/
private String status;
private Integer status;
/**
* 是否可用
*

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java

@ -1,17 +1,17 @@
package com.win.module.wms.dal.mysql.countRequest;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainExportReqVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 盘点申请主 Mapper
*
@ -43,6 +43,10 @@ public interface CountRequestMainMapper extends BaseMapperX<CountRequestMainDO>
.eqIfPresent(CountRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord())
.orderByDesc(CountRequestMainDO::getId));
}
default CountRequestMainDO selectByPlanNumber(String planNumber) {
return selectOne( CountRequestMainDO::getPlanNumber, planNumber);
}
default PageResult<CountRequestMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverPlan/DeliverPlanMainMapper.java

@ -1,17 +1,17 @@
package com.win.module.wms.dal.mysql.deliverPlan;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainExportReqVO;
import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainPageReqVO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 发货计划主 Mapper
*
@ -37,6 +37,9 @@ public interface DeliverPlanMainMapper extends BaseMapperX<DeliverPlanMainDO> {
.eqIfPresent(DeliverPlanMainDO::getAvailable, reqVO.getAvailable())
.orderByDesc(DeliverPlanMainDO::getId));
}
default DeliverPlanMainDO selectByNumber(String number) {
return selectOne(DeliverPlanMainDO::getNumber, number);
}
default PageResult<DeliverPlanMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/demandforecasting/DemandforecastingMainMapper.java

@ -1,17 +1,17 @@
package com.win.module.wms.dal.mysql.demandforecasting;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainExportReqVO;
import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainPageReqVO;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 要货预测主 Mapper
*
@ -38,6 +38,10 @@ public interface DemandforecastingMainMapper extends BaseMapperX<Demandforecasti
.eqIfPresent(DemandforecastingMainDO::getAvailable, reqVO.getAvailable())
.orderByDesc(DemandforecastingMainDO::getId));
}
default DemandforecastingMainDO selectByNumber(String supplierCode) {
return selectOne(DemandforecastingMainDO::getSupplierCode, supplierCode);
}
default PageResult<DemandforecastingMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/production/ProductionMainMapper.java

@ -48,6 +48,10 @@ public interface ProductionMainMapper extends BaseMapperX<ProductionMainDO> {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}
default ProductionMainDO selectByNumber(String number) {
return selectOne(ProductionMainDO::getNumber, number);
}
default List<ProductionMainDO> selectList(ProductionMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<ProductionMainDO>()
.eqIfPresent(ProductionMainDO::getDisplayOrder, reqVO.getDisplayOrder())

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java

@ -1,17 +1,17 @@
package com.win.module.wms.dal.mysql.purchase;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.purchase.vo.PurchaseMainExportReqVO;
import com.win.module.wms.controller.purchase.vo.PurchaseMainPageReqVO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 采购订单主 Mapper
*
@ -44,6 +44,11 @@ public interface PurchaseMainMapper extends BaseMapperX<PurchaseMainDO> {
.eqIfPresent(PurchaseMainDO::getAvailable, reqVO.getAvailable())
.orderByDesc(PurchaseMainDO::getId));
}
default PurchaseMainDO selectByNumber(String number) {
return selectOne(PurchaseMainDO::getNumber, number);
}
default PageResult<PurchaseMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java

@ -1,17 +1,17 @@
package com.win.module.wms.dal.mysql.purchasePlan;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainExportReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainPageReqVO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 要货计划主 Mapper
*
@ -39,6 +39,11 @@ public interface PurchasePlanMainMapper extends BaseMapperX<PurchasePlanMainDO>
.eqIfPresent(PurchasePlanMainDO::getAvailable, reqVO.getAvailable())
.orderByDesc(PurchasePlanMainDO::getId));
}
default PurchasePlanMainDO selectByNumber(String number) {
return selectOne(PurchasePlanMainDO::getNumber, number);
}
default PageResult<PurchasePlanMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java

@ -60,6 +60,10 @@ public interface PurchasereceiptRequestMainMapper extends BaseMapperX<Purchasere
return selectOne(PurchasereceiptRequestMainDO::getSupplierCode,supplierCode);
}
default PurchasereceiptRequestMainDO selectByNumber(String supplierCode) {
return selectOne(PurchasereceiptRequestMainDO::getSupplierCode, supplierCode);
}
default List<PurchasereceiptRequestMainDO> selectList(PurchasereceiptRequestMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<PurchasereceiptRequestMainDO>()
.eqIfPresent(PurchasereceiptRequestMainDO::getAsnNumber, reqVO.getAsnNumber())

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/sale/SaleMainMapper.java

@ -1,17 +1,17 @@
package com.win.module.wms.dal.mysql.sale;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.sale.vo.SaleMainExportReqVO;
import com.win.module.wms.controller.sale.vo.SaleMainPageReqVO;
import com.win.module.wms.dal.dataobject.sale.SaleMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 销售订单主 Mapper
*
@ -42,6 +42,9 @@ public interface SaleMainMapper extends BaseMapperX<SaleMainDO> {
.eqIfPresent(SaleMainDO::getAvailable, reqVO.getAvailable())
.orderByDesc(SaleMainDO::getId));
}
default SaleMainDO selectByNumber(String number) {
return selectOne(SaleMainDO::getNumber, number);
}
default PageResult<SaleMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestMainMapper.java

@ -1,17 +1,17 @@
package com.win.module.wms.dal.mysql.supplierdeliverRequest;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestMainExportReqVO;
import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 供应商发货申请主 Mapper
*
@ -53,6 +53,11 @@ public interface SupplierdeliverRequestMainMapper extends BaseMapperX<Supplierde
.eqIfPresent(SupplierdeliverRequestMainDO::getDirectCreateRecord, reqVO.getDirectCreateRecord())
.orderByDesc(SupplierdeliverRequestMainDO::getId));
}
default SupplierdeliverRequestMainDO selectByNumberAndAsnNumber(String ppNumber,String asnNumber) {
return selectOne(SupplierdeliverRequestMainDO::getPpNumber, ppNumber,SupplierdeliverRequestMainDO::getAsnNumber,asnNumber);
}
default PageResult<SupplierdeliverRequestMainDO> selectSenior(CustomConditions conditions) {
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java

@ -1,17 +1,17 @@
package com.win.module.wms.dal.mysql.transferissueRequest;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainExportReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 调拨出库申请主 Mapper
*
@ -53,6 +53,10 @@ public interface TransferissueRequestMainMapper extends BaseMapperX<Transferissu
.orderByDesc(TransferissueRequestMainDO::getId));
}
default TransferissueRequestMainDO selectByCarrierCode(String carrierCode) {
return selectOne(TransferissueRequestMainDO::getCarrierCode, carrierCode);
}
default List<TransferissueRequestMainDO> selectList(TransferissueRequestMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<TransferissueRequestMainDO>()
.eqIfPresent(TransferissueRequestMainDO::getCarrierCode, reqVO.getCarrierCode())

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java

@ -1,18 +1,17 @@
package com.win.module.wms.dal.mysql.work;
import java.util.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.work.vo.WorkMainExportReqVO;
import com.win.module.wms.controller.work.vo.WorkMainPageReqVO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.work.WorkMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 生产订单主 Mapper
*
@ -44,6 +43,10 @@ public interface WorkMainMapper extends BaseMapperX<WorkMainDO> {
.orderByDesc(WorkMainDO::getId));
}
default WorkMainDO selectByNumber(String number) {
return selectOne(WorkMainDO::getNumber, number);
}
default List<WorkMainDO> selectList(WorkMainExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<WorkMainDO>()
.eqIfPresent(WorkMainDO::getCustomerCode, reqVO.getCustomerCode())

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainService.java

@ -1,15 +1,13 @@
package com.win.module.wms.service.countRequest;
import java.util.*;
import javax.validation.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainCreateReqVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainExportReqVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainPageReqVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.countRequest.vo.*;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
* 盘点申请主 Service 接口
@ -79,4 +77,13 @@ public interface CountRequestMainService {
*/
List<CountRequestMainDO> getCountRequestMainList(CountRequestMainExportReqVO exportReqVO);
/**
* 批量导入采购索赔申请主信息
* @param datas 导入采购索赔申请主信息列表
* @param mode 导入模式1更新2追加3覆盖
* @param updatePart 是否支持更新
* @return 导入结果
*/
List<CountRequestMainImportErrorVO> importCountRequestMainList(List<CountRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
}

158
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java

@ -1,24 +1,40 @@
package com.win.module.wms.service.countRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainCreateReqVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainExportReqVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainPageReqVO;
import com.win.module.wms.controller.countRequest.vo.CountRequestMainUpdateReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.wms.controller.countRequest.vo.*;
import com.win.module.wms.convert.countRequest.CountRequestDetailConvert;
import com.win.module.wms.convert.countRequest.CountRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.countPlan.CountPlanDetailDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.mysql.countRequest.CountRequestDetailMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.countPlan.CountPlanMainService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
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.*;
import static com.win.module.wms.enums.ErrorCodeConstants.COUNT_REQUEST_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY;
/**
* 盘点申请主 Service 实现类
@ -28,9 +44,22 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Service
@Validated
public class CountRequestMainServiceImpl implements CountRequestMainService {
@Resource
private CountRequestMainMapper countRequestMainMapper;
@Resource
private CountRequestDetailMapper countRequestDetailMapper;
@Resource
private ShiftService shiftService;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private JobUtils jobUtils;
@Resource
private LocationService locationService;
@Resource
private CountPlanMainService countPlanMainService;
@Override
public Long createCountRequestMain(CountRequestMainCreateReqVO createReqVO) {
@ -78,13 +107,114 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
public PageResult<CountRequestMainDO> getCountRequestMainPage(CountRequestMainPageReqVO pageReqVO) {
return countRequestMainMapper.selectPage(pageReqVO);
}
@Override
public PageResult<CountRequestMainDO> getCountRequestMainSenior(CustomConditions conditions) {
return countRequestMainMapper.selectSenior(conditions);
}
@Override
public List<CountRequestMainDO> getCountRequestMainList(CountRequestMainExportReqVO exportReqVO) {
return countRequestMainMapper.selectList(exportReqVO);
}
public List<CountRequestMainImportErrorVO> importCountRequestMainList(List<CountRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<CountRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//子表的验证
List<CountRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<CountRequestDetailDO> subDOList = CountRequestDetailConvert.INSTANCE.convertList03(subList);
for (CountRequestDetailDO purchasePlanDetailDO : subDOList) {
String messageDetail = "";
//校验库位基础信息
try {
LocationDO locationDO = locationService.selectLocation(purchasePlanDetailDO.getLocationCode());
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode());
if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ",";
} else {
purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1());
purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2());
purchasePlanDetailDO.setItemName(itembasicDO.getName());
purchasePlanDetailDO.setProjectCode(itembasicDO.getProject());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验业务类型
try {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountRequest");
jobUtils.ifInToLocationType(purchasePlanDetailDO.getLocationCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(purchasePlanDetailDO.getInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验盘点计划
try {
CountPlanDetailDO countPlanDetailDO = countPlanMainService.selectCountPlanExist(createReqVO.getPlanNumber());
if (countPlanDetailDO != null) {
// createReqVO.setWarehouseCode(countPlanDetailDO.get)
} else {
messageDetail += "盘点计划" + createReqVO.getPlanNumber() + "无效" + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
CountRequestDetailCreateReqVO purchasePlanDetailCreateReqVO = CountRequestDetailConvert.INSTANCE.convert1(purchasePlanDetailDO);
CountRequestMainImportErrorVO importVO = CountRequestDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchasePlanDetailDO.setNumber(createReqVO.getNumber());
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
CountRequestMainDO existPurchaseclaimRequestMainDO = countRequestMainMapper.selectByPlanNumber(createReqVO.getPlanNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
CountRequestMainDO createObj =CountRequestMainConvert.INSTANCE.convert(createReqVO);
countRequestMainMapper.insert(createObj);
countRequestDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
CountRequestMainDO createObj = CountRequestMainConvert.INSTANCE.convert(createReqVO);
countRequestMainMapper.updateById(createObj);
countRequestDetailMapper.updateBatch(subDOList);
}
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
}

169
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java

@ -1,16 +1,34 @@
package com.win.module.wms.service.deliverPlan;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
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.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.deliverPlan.vo.*;
import com.win.module.wms.convert.deliverPlan.DeliverPlanDetailConvert;
import com.win.module.wms.convert.deliverPlan.DeliverPlanMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.customer.CustomerDO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.sale.SaleDetailDO;
import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanDetailMapper;
import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.customer.CustomerService;
import com.win.module.wms.service.deliverJob.DeliverJobMainService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -35,6 +53,26 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
private DeliverPlanMainMapper deliverPlanMainMapper;
@Resource
private DeliverPlanDetailMapper deliverPlanDetailMapper;
@Resource
private ItembasicService itembasicService;
@Resource
private JobUtils jobUtils;
@Resource
private ItempackagingService itempackagingService;
@Resource
private ShiftService shiftService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private CustomerService customerService;
@Resource
private BusinesstypeService businesstypeService;
@Resource
private DeliverJobMainService deliverJobMainService;
@Resource
private SerialNumberApi serialNumberApi;
@Override
public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) {
@ -77,10 +115,12 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
public List<DeliverPlanMainDO> getDeliverPlanMainList(Collection<Long> ids) {
return deliverPlanMainMapper.selectBatchIds(ids);
}
@Override
public PageResult<DeliverPlanMainDO> getDeliverPlanMainSenior(CustomConditions conditions) {
return deliverPlanMainMapper.selectSenior(conditions);
}
@Override
public PageResult<DeliverPlanMainDO> getDeliverPlanMainPage(DeliverPlanMainPageReqVO pageReqVO) {
return deliverPlanMainMapper.selectPage(pageReqVO);
@ -90,35 +130,128 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService {
public List<DeliverPlanMainDO> getDeliverPlanMainList(DeliverPlanMainExportReqVO exportReqVO) {
return deliverPlanMainMapper.selectList(exportReqVO);
}
@Override
public List<DeliverPlanMainImportErrorVO> importDeliverPlanMainList(List<DeliverPlanMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public List<DeliverPlanMainImportErrorVO> importDeliverPlanMainList(List<DeliverPlanMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<DeliverPlanMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
DeliverPlanMainDO createObj =DeliverPlanMainConvert.INSTANCE.convert(createReqVO);
deliverPlanMainMapper.insert(createObj);
String messageMain = "";
//主表的验证
//校验客户代码
try {
CustomerDO customerDO = customerService.selectCustomerExist(createReqVO.getCustomerCode());
if (customerDO == null) {
messageMain += "客户代码" + createReqVO.getCustomerCode() + "无效" + ",";
}
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//校验业务类型相关属性
try {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
// createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
// createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes());
// createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
// createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes());
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//子表的验证
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (DeliverPlanDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
for (DeliverPlanDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
} else {
// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
// purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProject(itembasicDO.getProject());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验物品标包信息
try {
SaleDetailDO saleDetailDO = deliverJobMainService.saleDetailExist(purchaseDetailDO.getSoNumber(), purchaseDetailDO.getSoLine(), purchaseDetailDO.getItemCode());
if (saleDetailDO != null) {
// createReqVO.setBusinessType(saleDetailDO.getCode());
}
// jobUtils.ifInToLocationType(from_location_code,saleDetailDO);
// createReqVO.setFromLocationTypes(saleDetailDO.getOutLocationTypes());
// createReqVO.setToLocationTypes(saleDetailDO.getInLocationTypes());
// createReqVO.setFromAreaCodes(saleDetailDO.getOutAreaCodes());
// createReqVO.setToAreaCodes(saleDetailDO.getInAreaCodes());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
DeliverPlanDetailCreateReqVO purchaseDetailCreateReqVO = DeliverPlanDetailConvert.INSTANCE.convert1(purchaseDetailDO);
DeliverPlanMainImportErrorVO importVO = DeliverPlanDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
purchaseDetailDO.setMasterId(createReqVO.getId());
purchaseDetailDO.setCustomerDockCode(null);
purchaseDetailDO.setNumber(createReqVO.getNumber());
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
DeliverPlanMainDO existPurchaseclaimRequestMainDO = deliverPlanMainMapper.selectByNumber(createReqVO.getNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setStatus(null);
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO);
deliverPlanMainMapper.insert(createObj);
deliverPlanDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setStatus(null);
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO);
deliverPlanMainMapper.updateById(createObj);
deliverPlanDetailMapper.updateBatch(subDOList);
}
}
deliverPlanDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

163
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java

@ -1,18 +1,35 @@
package com.win.module.wms.service.demandforecasting;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
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.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.demandforecasting.vo.*;
import com.win.module.wms.convert.demandforecasting.DemandforecastingDetailConvert;
import com.win.module.wms.convert.demandforecasting.DemandforecastingMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDetailDO;
import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.supplier.SupplierDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.demandforecasting.DemandforecastingDetailMapper;
import com.win.module.wms.dal.mysql.demandforecasting.DemandforecastingMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.purchase.PurchaseMainService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.supplier.SupplierService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
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;
@ -37,6 +54,21 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe
private DemandforecastingMainMapper demandforecastingMainMapper;
@Resource
private DemandforecastingDetailMapper demandforecastingDetailMapper;
@Resource
private JobUtils jobUtils;
@Resource
private RequestsettingService requestsettingService;
@Resource
private SupplierService supplierService;
@Resource
private ItembasicService itembasicService;
@Resource
private PurchaseMainService purchaseMainService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private SerialNumberApi serialNumberApi;
@Override
public Long createDemandforecastingMain(DemandforecastingMainCreateReqVO createReqVO) {
@ -89,41 +121,126 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe
public PageResult<DemandforecastingMainDO> getDemandforecastingMainSenior(CustomConditions conditions) {
return demandforecastingMainMapper.selectSenior(conditions);
}
@Override
public List<DemandforecastingMainDO> getDemandforecastingMainList(DemandforecastingMainExportReqVO exportReqVO) {
return demandforecastingMainMapper.selectList(exportReqVO);
}
public List<DemandforecastingImportErrorVO> importDemandforecastingRequestList(List<DemandforecastingMainCreateReqVO> datas, Integer mode, boolean updatePart) {
@Override
@Transactional
public List<DemandforecastingImportErrorVO> importDemandforecastingRequestList(List<DemandforecastingMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<DemandforecastingImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
// }
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO);
demandforecastingMainMapper.insert(createObj);
List<DemandforecastingDetailCreateReqVO> subList = createReqVO.getSubList();
List<DemandforecastingDetailDO> subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (DemandforecastingDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setMasterId(createReqVO.getId());
detailDO.setNumber(createReqVO.getNumber());
String messageMain = "";
//主表校验方法
if (mode != null) {
//校验供应商基础信息
try {
SupplierDO supplierDO = supplierService.selectSupplier(createReqVO.getSupplierCode());
if (supplierDO == null) {
messageMain += "未查找到供应商" + createReqVO.getSupplierCode() + "信息" + ",";
}
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
List<DemandforecastingDetailCreateReqVO> subList = createReqVO.getSubList();
List<DemandforecastingDetailDO> subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (DemandforecastingDetailDO detailDO : subDOList) {
String messageDetail = "";
//校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode());
if (itembasicDO == null) {
messageDetail += "物品" + detailDO.getItemCode() + "无效" + ",";
} else {
if (!detailDO.getUom().equals(itembasicDO.getUom())) {
messageDetail += "计量单位" + detailDO.getItemCode() + "错误," + "应该是" + itembasicDO.getUom() + ",";
}
}
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
//校验采购订单
try {
PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDO.getPoNumber(), createReqVO.getSupplierCode(), detailDO.getItemCode(), detailDO.getPoLine());
if ((purchaseDetailDO.getShippedQty().add(detailDO.getPlanQty())).compareTo(purchaseDetailDO.getOrderQty()) == 1) {
messageDetail += "订单行" + detailDO.getPoLine() + "的已收货数量" + purchaseDetailDO.getReceivedQty() + "+计划数量" + detailDO.getPlanQty() + "大于订单数量" + purchaseDetailDO.getOrderQty() + ",";
}
} catch (Exception ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), detailDO.getItemCode());
if (supplieritemDO == null) {
messageDetail += "未查找到物品" + detailDO.getItemCode() + "供应商" + createReqVO.getSupplierCode() + "信息" + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
DemandforecastingDetailCreateReqVO demandforecastingDetailCreateReqVO = DemandforecastingDetailConvert.INSTANCE.convert1(detailDO);
DemandforecastingImportErrorVO importVO = DemandforecastingDetailConvert.INSTANCE.convert(createReqVO, demandforecastingDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PREDICTION.getCode());
createReqVO.setNumber(number);
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
DemandforecastingMainDO demandforecastingMainDO = demandforecastingMainMapper.selectByNumber(createReqVO.getSupplierCode());
if (demandforecastingMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO);
//根据版本默认作废之前版本
QueryWrapper<DemandforecastingMainDO> demandforecastingMainDOQueryWrapper = new QueryWrapper<>();
demandforecastingMainDOQueryWrapper.eq("supplier_code", createReqVO.getSupplierCode());
List<DemandforecastingMainDO> doList = demandforecastingMainMapper.selectList(demandforecastingMainDOQueryWrapper);
for (DemandforecastingMainDO mainDO : doList) {
mainDO.setAvailable("FALSE");
}
demandforecastingMainMapper.insert(createObj);
demandforecastingDetailMapper.insertBatch(subDOList);
} else if (demandforecastingMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO);
//根据版本默认作废之前版本
QueryWrapper<DemandforecastingMainDO> demandforecastingMainDOQueryWrapper = new QueryWrapper<>();
demandforecastingMainDOQueryWrapper.eq("supplier_code", createReqVO.getSupplierCode());
List<DemandforecastingMainDO> doList = demandforecastingMainMapper.selectList(demandforecastingMainDOQueryWrapper);
for (DemandforecastingMainDO mainDO : doList) {
mainDO.setAvailable("FALSE");
}
demandforecastingMainMapper.updateById(createObj);
demandforecastingDetailMapper.updateBatch(subDOList);
}
}
}
demandforecastingDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

351
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java

@ -1,16 +1,33 @@
package com.win.module.wms.service.inventorychangeRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
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.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.inventorychangeRequest.vo.*;
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestDetailConvert;
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert;
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.inventorychangeRequest.InventorychangeRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper;
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -35,7 +52,21 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
private InventorychangeRequestMainMapper inventorychangeRequestMainMapper;
@Resource
private InventorychangeRequestDetailMapper inventorychangeRequestDetailMapper;
@Resource
private ItembasicService itembasicService;
@Resource
private ItempackagingService itempackagingService;
@Resource
private ShiftService shiftService;
@Resource
private JobUtils jobUtils;
@Resource
private LocationService locationService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) {
// 插入
@ -82,43 +113,329 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq
public PageResult<InventorychangeRequestMainDO> getInventorychangeRequestMainPage(InventorychangeRequestMainPageReqVO pageReqVO) {
return inventorychangeRequestMainMapper.selectPage(pageReqVO);
}
@Override
public PageResult<InventorychangeRequestMainDO> getInventorychangeRequestMainSenior(CustomConditions conditions) {
return inventorychangeRequestMainMapper.selectSenior(conditions);
}
@Override
public List<InventorychangeRequestMainDO> getInventorychangeRequestMainList(InventorychangeRequestMainExportReqVO exportReqVO) {
return inventorychangeRequestMainMapper.selectList(exportReqVO);
}
@Override
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<InventorychangeRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO);
inventorychangeRequestMainMapper.insert(createObj);
String messageMain = "";
//主表的验证
//子表的验证
List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (InventorychangeRequestDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
for (InventorychangeRequestDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
//校验来源库位基础信息
try {
LocationDO locationDO = locationService.selectLocation(purchaseDetailDO.getLocationCode());
if (locationDO != null) {
purchaseDetailDO.setLocationCode(locationDO.getCode());
purchaseDetailDO.setAreaCode(locationDO.getAreaCode());
purchaseDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode());
}
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
} else {
purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProjectCode(itembasicDO.getProject());
}
purchaseDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验业务类型
try {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk");
jobUtils.selectItembasicExist(purchaseDetailDO.getItemCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(purchaseDetailDO.getFromInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
//隔离转合格申请
if ("Hold".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Hold");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("OK");
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
}
//合格转隔离申请
if ("OK".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("OK");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("Hold");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
purchaseDetailDO.setToPackingNumber(null);
purchaseDetailDO.setToBatch(null);
purchaseDetailDO.setToContainerNumber(null);
}
//隔离转报废申请
if ("Hold".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Hold");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
purchaseDetailDO.setFromPackingNumber(null);
purchaseDetailDO.setFromBatch(null);
purchaseDetailDO.setFromContainerNumber(null);
}
//报废转隔离申请
if ("Scrap".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Scrap");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
purchaseDetailDO.setFromPackingNumber(null);
purchaseDetailDO.setFromBatch(null);
purchaseDetailDO.setFromContainerNumber(null);
}
//合格转报废
if ("Ok".equals(purchaseDetailDO.getFromInventoryStatus())) {
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("Scrap");
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
purchaseDetailDO.setFromQty(balanceDO.getQty());
purchaseDetailDO.setToQty(balanceDO.getQty());
purchaseDetailDO.setQty(balanceDO.getQty());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate());
purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate());
purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate());
purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
purchaseDetailDO.setToInventoryStatus("Scrap");
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode());
createReqVO.setNumber(number);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
purchaseDetailDO.setFromPackingNumber(null);
purchaseDetailDO.setFromBatch(null);
purchaseDetailDO.setFromContainerNumber(null);
}
InventorychangeRequestDetailCreateReqVO purchaseDetailCreateReqVO = InventorychangeRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO);
InventorychangeRequestMainImportErrorVO importVO = InventorychangeRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
purchaseDetailDO.setMasterId(createReqVO.getId());
}
}
if (errorList.isEmpty()) {
if (mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO);
inventorychangeRequestMainMapper.insert(createObj);
inventorychangeRequestDetailMapper.insertBatch(subDOList);
} else if (mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO);
inventorychangeRequestMainMapper.updateById(createObj);
inventorychangeRequestDetailMapper.updateBatch(subDOList);
}
}
inventorychangeRequestDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

130
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java

@ -1,16 +1,29 @@
package com.win.module.wms.service.inventorymoveRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
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.module.wms.controller.inventorymoveRequest.vo.*;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestDetailConvert;
import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert;
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.inventorymoveRequest.InventorymoveRequestDetailDO;
import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestDetailMapper;
import com.win.module.wms.dal.mysql.inventorymoveRequest.InventorymoveRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -36,6 +49,16 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
@Resource
private InventorymoveRequestDetailMapper inventorymoveRequestDetailMapper;
@Resource
private ItembasicService itembasicService;
@Resource
private ItempackagingService itempackagingService;
@Resource
private ShiftService shiftService;
@Resource
private JobUtils jobUtils;
@Resource
private LocationService locationService;
@Override
public Long createInventorymoveRequestMain(InventorymoveRequestMainCreateReqVO createReqVO) {
@ -88,39 +111,118 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
public PageResult<InventorymoveRequestMainDO> getInventorymoveRequestMainSenior(CustomConditions conditions) {
return inventorymoveRequestMainMapper.selectSenior(conditions);
}
@Override
public List<InventorymoveRequestMainDO> getInventorymoveRequestMainList(InventorymoveRequestMainExportReqVO exportReqVO) {
return inventorymoveRequestMainMapper.selectList(exportReqVO);
}
@Override
public List<InventorymoveRequestMainImportErrorVO> importInventorymoveRequestMainList(List<InventorymoveRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public List<InventorymoveRequestMainImportErrorVO> importInventorymoveRequestMainList(List<InventorymoveRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List< InventorymoveRequestMainImportErrorVO> errorList = new ArrayList<>();
List<InventorymoveRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
String messageMain = "";
//主表的验证
//校验供应商送货策略
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null);
// String json = ruleRespVO.getConfiguration();
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
InventorymoveRequestMainDO createObj = InventorymoveRequestMainConvert.INSTANCE.convert(createReqVO);
inventorymoveRequestMainMapper.insert(createObj);
//子表的验证
List<InventorymoveRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<InventorymoveRequestDetailDO> subDOList = InventorymoveRequestDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for ( InventorymoveRequestDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
for (InventorymoveRequestDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
//校验来源/目标库位基础信息
try {
LocationDO locationDO = locationService.selectLocation(createReqVO.getFromWarehouseOde());
if (locationDO != null) {
purchaseDetailDO.setFromLocationCode(locationDO.getCode());
// purchaseDetailDO.setArea_code(purchaseDetailDO.getAreaCode());
// purchaseDetailDO.setLocation_group_code(purchaseDetailDO.getAreaCode());
}
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
} else {
purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProjectCode(itembasicDO.getProject());
}
purchaseDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验业务类型
try {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest");
jobUtils.ifInToLocationType(purchaseDetailDO.getFromLocationCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(purchaseDetailDO.getFromInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验业务类型
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(purchaseDetailDO.getFromInventoryStatus());
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber()
, purchaseDetailDO.getFromBatch(), purchaseDetailDO.getFromLocationCode(), inventoryStatus);
if (balanceDOList != null) {
BalanceDO balanceDO = balanceDOList.get(0);
// purchaseDetailDO.setArriveDate( balanceDO.getArriveDate() );
// purchaseDetailDO.setProduceDate( balanceDO.getProduceDate() );
// purchaseDetailDO.setExpireDate( balanceDO.getExpireDate() );
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
InventorymoveRequestDetailCreateReqVO purchaseDetailCreateReqVO = InventorymoveRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO);
InventorymoveRequestMainImportErrorVO importVO = InventorymoveRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
purchaseDetailDO.setMasterId(createReqVO.getId());
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
if (mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
inventorymoveRequestDetailMapper.insertBatch(subDOList);
} else if (mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
inventorymoveRequestDetailMapper.updateBatch(subDOList);
}
}
inventorymoveRequestDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

195
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java

@ -3,20 +3,38 @@ package com.win.module.wms.service.production;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
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.module.wms.controller.production.vo.*;
import com.win.module.wms.convert.production.ProductionDetailConvert;
import com.win.module.wms.convert.production.ProductionMainConvert;
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.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.team.TeamDO;
import com.win.module.wms.dal.mysql.production.ProductionDetailMapper;
import com.win.module.wms.dal.mysql.production.ProductionMainMapper;
import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobDetailMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.service.team.TeamService;
import com.win.module.wms.service.work.WorkMainService;
import com.win.module.wms.service.workshop.WorkshopService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -36,11 +54,30 @@ public class ProductionMainServiceImpl implements ProductionMainService {
@Resource
private ProductionMainMapper productionMainMapper;
@Resource
private ProductionDetailMapper productionDetailMapper;
@Resource
@Resource
private ProductreceiptJobDetailMapper productreceiptJobDetailMapper;
@Resource
private ShiftService shiftService;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private JobUtils jobUtils;
@Resource
private WorkshopService workshopService;
@Resource
private ProductionlineService productionlineService;
@Resource
private TeamService teamService;
@Resource
private ProductionlineitemService productionlineitemService;
@Resource
private WorkMainService workMainService;
@Override
public Long createProductionMain(ProductionMainCreateReqVO createReqVO) {
@ -93,6 +130,7 @@ public class ProductionMainServiceImpl implements ProductionMainService {
public List<ProductionMainDO> getProductionMainList(ProductionMainExportReqVO exportReqVO) {
return productionMainMapper.selectList(exportReqVO);
}
//公共方法 校验生产计划 Plan---VPod
@Override
public ProductionDetailDO planProductionDetailDoExist(String pnumber, String pitemCode) {
@ -108,14 +146,14 @@ public class ProductionMainServiceImpl implements ProductionMainService {
ProductionDetailDO productionDetailDO = productionDetailMapper.selectOne(queryWrapper1);
if (productionDetailDO != null && "TRUE".equals(productionDetailDO.getAvailable())) {
return productionDetailDO;
}else {
throw new UtilException( "生产计划明细:订单号" + pnumber + "、零件号" + pitemCode + "、无效");
} else {
throw new UtilException("生产计划明细:订单号" + pnumber + "、零件号" + pitemCode + "、无效");
}
}else {
throw new UtilException( "生产计划" + pnumber + "已经关闭");
} else {
throw new UtilException("生产计划" + pnumber + "已经关闭");
}
}else {
throw new UtilException( "生产计划" + pnumber + "无效");
} else {
throw new UtilException("生产计划" + pnumber + "无效");
}
}
@ -125,34 +163,141 @@ public class ProductionMainServiceImpl implements ProductionMainService {
}
@Override
public List<ProductionMainImportErrorVO> importProductionMainList(List<ProductionMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public List<ProductionMainImportErrorVO> importProductionMainList(List<ProductionMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<ProductionMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
String messageMain = "";
//主表的验证
// 校验班组基础信息
try {
if (!"".equals(createReqVO.getTeam())) {
TeamDO teamDO = teamService.selectTeamExist(createReqVO.getTeam());
if (teamDO == null) {
messageMain += "班组" + createReqVO.getTeam() + "无效" + ",";
}
}
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
// 校验班次基础信息
try {
if (!"".equals(createReqVO.getShift())) {
TeamDO teamDO = teamService.selectTeamExist(createReqVO.getTeam());
if (teamDO == null) {
messageMain += "班组" + createReqVO.getTeam() + "无效" + ",";
}
}
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
ProductionMainDO createObj = ProductionMainConvert.INSTANCE.convert(createReqVO);
productionMainMapper.insert(createObj);
//子表的验证
List<ProductionDetailCreateReqVO> subList = createReqVO.getSubList();
List<ProductionDetailDO> subDOList = ProductionDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (ProductionDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
for (ProductionDetailDO purchasePlanDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode());
if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ",";
} else {
// purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1());
// purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2());
// purchasePlanDetailDO.setItemName(itembasicDO.getName());
// purchasePlanDetailDO.setProjectCode(itembasicDO.getProject());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
//校验车间基础信息
try {
workshopService.selectWorkshopExist(createReqVO.getWorkshop());
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
// 校验生产线基础信息
try {
ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(createReqVO.getProductionLine());
if (productionlineDO != null) {
//prodlinedto.fg_location_code=to_location_code
}
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
// 校验工位基础信息
// try {
// if("".equals(work_station_code){
//
// }
// } catch (Exception ex) {
// messageMain += ex.getMessage() + ",";
// }
// 校验零件生产线关系
try {
// productionlineitemService.productionLineCodeAndpItemCodeExist(createReqVO.getProductionLineCode(), purchasePlanDetailDO.getItemCode());
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
// 检验生产订单
try {
workMainService.selectWorkExist(createReqVO.getNumber(),purchasePlanDetailDO.getItemCode());
} catch (Exception ex) {
messageMain += ex.getMessage() + ",";
}
ProductionDetailCreateReqVO purchasePlanDetailCreateReqVO = ProductionDetailConvert.INSTANCE.convert1(purchasePlanDetailDO);
ProductionMainImportErrorVO importVO = ProductionDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchasePlanDetailDO.setNumber(createReqVO.getNumber());
purchasePlanDetailDO.setMasterId(createReqVO.getId());
purchasePlanDetailDO.setGoodQty(new BigDecimal(0));
purchasePlanDetailDO.setNotGoodQty(new BigDecimal(0));
}
}
if (errorList.isEmpty()) {
ProductionMainDO existPurchaseclaimRequestMainDO = productionMainMapper.selectByNumber(createReqVO.getNumber());
// 判断如果不存在,在进行插入
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkPlan");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
ProductionMainDO createObj = ProductionMainConvert.INSTANCE.convert(createReqVO);
productionMainMapper.insert(createObj);
productionDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO == null && mode != 2) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkPlan");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
ProductionMainDO createObj = ProductionMainConvert.INSTANCE.convert(createReqVO);
productionMainMapper.updateById(createObj);
productionDetailMapper.updateBatch(subDOList);
}
}
productionDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

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

@ -4,58 +4,44 @@ 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.common.pojo.PageResult;
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.convert.productscrapRequest.ProductscrapRequestMainConvert;
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.productscrapRequest.ProductscrapRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestDetailMapper;
import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
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;
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestDetailMapper;
import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestMainMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
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 static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTSCRAP_REQUEST_NOT_EXISTS;
/**
* 制品报废申请主 Service 实现类
@ -83,8 +69,20 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
@Resource
private ItembasicService itembasicService;
@Resource
private RequestsettingService requestsettingService;
@Resource
private ShiftService shiftService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private LocationService locationService;
@Override
public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) {
// 插入
@ -122,10 +120,12 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
// 删除
productscrapRequestMainMapper.deleteById(id);
}
@Override
public PageResult<ProductscrapRequestMainDO> getProductscrapRequestMainSenior(CustomConditions conditions) {
return productscrapRequestMainMapper.selectSenior(conditions);
}
private void validateProductscrapRequestMainExists(Long id) {
if (productscrapRequestMainMapper.selectById(id) == null) {
throw exception(PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS);
@ -155,20 +155,22 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
public String Isuom(String uom1, String uom2) {
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1);
String value = dictDataRespDTO.getLabel();
if(uom2.equals(value)){
if (uom2.equals(value)) {
return "ture";
}else {
throw new UtilException("计量单位"+uom2+"错误,应该是"+value);
} else {
throw new UtilException("计量单位" + uom2 + "错误,应该是" + value);
}
}
public String isqty(BigDecimal qty1, BigDecimal qty2) {
if(qty1.compareTo(qty2) < 0){
if (qty1.compareTo(qty2) < 0) {
return "ture";
} else {
throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1);
throw new UtilException("上架数量" + qty2 + "不能大于库存数量" + qty1);
}
}
public List<ProductscrapRequestImportErrorVO> importProductscrapRequestList(List<ProductscrapRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public List<ProductscrapRequestImportErrorVO> importProductscrapRequestList(List<ProductscrapRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PRODUCTSCRAP_REQUEST_NOT_EXISTS);
}
@ -181,90 +183,90 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
List<ProductscrapRequestDetailDO> subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList);
for (ProductscrapRequestDetailDO detailDO : subDOList) {
if (mode != null) {
try{
validateProductscrapExists(null);
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
ItembasicDO itembasic = itembasicService.selectItembasic(detailDO.getItemCode());
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) {
try {
Isuom(detailDO.getUom(), itembasic.getUom());
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest");
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) {
try {
jobUtils.selectItembasicExist(itembasic.getType(), businesstype);
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),businesstype);
}catch (Exception ex) {
try {
jobUtils.ifInToLocationType(detailDO.getFromLocationCode(), businesstype);
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(),businesstype);
}catch (Exception ex) {
try {
jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstype);
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
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());
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) {
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
if(isError) {
ProductscrapRequestImportErrorVO importVO = ProductscrapRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO);
if (isError) {
ProductscrapRequestImportErrorVO importVO = ProductscrapRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO);
importVO.setImportStatus("失败");
importVO.setImportRemark(massage.substring(0, massage.length() - 1));
errorList.add(importVO);
}
if(!isError) {
if (!isError) {
detailDO.setNumber(createReqVO.getNumber());
detailDO.setMasterId(createReqVO.getId());
}
if(!errorList.isEmpty()){
if (!errorList.isEmpty()) {
// 判断如果不存在,在进行插入
RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("ProductPutawayRequest");
if(requestsetting != null) {
if (requestsetting != null) {
createReqVO.setAutoCommit(requestsetting.getAutoCommit());
createReqVO.setAutoAgree(requestsetting.getAutoAgree());
createReqVO.setAutoExecute(requestsetting.getAutoExecute());
@ -281,7 +283,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java

@ -89,12 +89,6 @@ public interface PurchaseMainService {
*/
public PurchaseDetailDO selectPurchaseDetailDoExist(String pnumber, String psupplierCode, String pitemCode,String poLine);
/**
* Order----VPur
* 校验采购订单明细
* @author chenfang
* @return 采购订单子列表
*/
public List<PurchaseMainImportErrorVO> importPurchaseMaintList(List<PurchaseMainCreateReqVO> datas, Integer mode, boolean updatePart);
}

201
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java

@ -3,12 +3,15 @@ package com.win.module.wms.service.purchase;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.enums.CommonStatusEnum;
import com.win.framework.common.exception.ServiceException;
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.module.wms.controller.purchase.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.purchase.PurchaseDetailConvert;
import com.win.module.wms.convert.purchase.PurchaseMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
@ -19,18 +22,24 @@ import com.win.module.wms.dal.dataobject.stdcostprice.StdcostpriceDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper;
import com.win.module.wms.dal.mysql.purchase.PurchaseMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.currencyexchange.CurrencyexchangeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.stdcostprice.StdcostpriceService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -53,6 +62,8 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
@Resource
private ItembasicService itembasicService;
@Resource
private JobUtils jobUtils;
@Resource
private ItempackagingService itempackagingService;
@Resource
private ShiftService shiftService;
@ -66,6 +77,9 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
private RuleService ruleService;
@Resource
private PurchaseDetailMapper purchaseDetailMapper;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createPurchaseMain(PurchaseMainCreateReqVO createReqVO) {
// 插入
@ -74,10 +88,12 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
// 返回
return purchaseMain.getId();
}
@Override
public PageResult<PurchaseMainDO> getPurchaseMainSenior(CustomConditions conditions) {
return purchaseMainMapper.selectSenior(conditions);
}
@Override
public void updatePurchaseMain(PurchaseMainUpdateReqVO updateReqVO) {
// 校验存在
@ -120,31 +136,32 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
public List<PurchaseMainDO> getPurchaseMainList(PurchaseMainExportReqVO exportReqVO) {
return purchaseMainMapper.selectList(exportReqVO);
}
//公共方法 校验采购订单明细
@Override
public PurchaseDetailDO selectPurchaseDetailDoExist(String pnumber, String psupplierCode, String pitemCode,String poLine) {
public PurchaseDetailDO selectPurchaseDetailDoExist(String pnumber, String psupplierCode, String pitemCode, String poLine) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("number",pnumber);
queryWrapper.eq("supplier_code",psupplierCode);
queryWrapper.eq("number", pnumber);
queryWrapper.eq("supplier_code", psupplierCode);
PurchaseMainDO purchaseMainDO = purchaseMainMapper.selectOne(queryWrapper);
if(purchaseMainDO != null && "TRUE".equals(purchaseMainDO.getAvailable())){
if(!"CLOSED".equals(purchaseMainDO.getStatus())){
if (purchaseMainDO != null && "TRUE".equals(purchaseMainDO.getAvailable())) {
if (!"CLOSED".equals(purchaseMainDO.getStatus())) {
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("master_id",purchaseMainDO.getId());
queryWrapper1.eq("number",pnumber);
queryWrapper1.eq("po_line",poLine);
queryWrapper1.eq("item_code",pitemCode);
queryWrapper1.eq("master_id", purchaseMainDO.getId());
queryWrapper1.eq("number", pnumber);
queryWrapper1.eq("po_line", poLine);
queryWrapper1.eq("item_code", pitemCode);
PurchaseDetailDO purchaseDetailDO = purchaseDetailMapper.selectOne(queryWrapper1);
if(purchaseDetailDO != null && "TRUE".equals(purchaseDetailDO.getAvailable())){
if (purchaseDetailDO != null && "TRUE".equals(purchaseDetailDO.getAvailable())) {
return purchaseDetailDO;
}else {
throw new UtilException( "采购订单明细:订单号" + pnumber + "、订单行" + poLine + "、零件号" + pitemCode + "、无效");
} else {
throw new UtilException("采购订单明细:订单号" + pnumber + "、订单行" + poLine + "、零件号" + pitemCode + "、无效");
}
}else {
throw new UtilException( "采购订单" + pnumber + "已经关闭");
} else {
throw new UtilException("采购订单" + pnumber + "已经关闭");
}
}else {
throw new UtilException( "采购订单" + pnumber + "无效");
} else {
throw new UtilException("采购订单" + pnumber + "无效");
}
}
@ -155,72 +172,128 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
List<PurchaseMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String importRemark = "";
String messageMain = "";
//主表的验证
//校验供应商基础信息
try {
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode());
BeanUtils.copyProperties(createReqVO, shiftDO);
} catch (ServiceException ex) {
importRemark += ex.getMessage() + ",";
messageMain += ex.getMessage() + ",";
}
//校验供应商送货策略
try {
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null);
String json = ruleRespVO.getConfiguration();
} catch (ServiceException ex) {
importRemark += ex.getMessage() + ",";
}
// try {
// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null);
// String json = ruleRespVO.getConfiguration();
// } catch (ServiceException ex) {
// importRemark += ex.getMessage() + ",";
// }
//子表的验证
if (createReqVO.getSubList() != null) {
for (PurchaseDetailCreateReqVO purchaseDetailCreateReqVO : createReqVO.getSubList()) {
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailCreateReqVO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailCreateReqVO.getUom()) {
importRemark += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailCreateReqVO.getUom() + ",";
}
purchaseDetailCreateReqVO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
importRemark += ex.getMessage() + ",";
}
// 校验物品标包信息
try {
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailCreateReqVO.getItemCode());
purchaseDetailCreateReqVO.setStdPackUnit(itempackagingDO.getStdPackUnit());
purchaseDetailCreateReqVO.setStdPackQty(itempackagingDO.getStdPackQty());
} catch (ServiceException ex) {
importRemark += ex.getMessage() + ",";
List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList();
List<PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList);
for (PurchaseDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
}
purchaseDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), purchaseDetailCreateReqVO.getItemCode());
purchaseDetailCreateReqVO.setSupplierUom(supplieritemDO.getSupplierUom());
purchaseDetailCreateReqVO.setStdPackQty(supplieritemDO.getPackQty());
purchaseDetailCreateReqVO.setConvertRate(supplieritemDO.getConvertRate());
} catch (ServiceException ex) {
importRemark += ex.getMessage() + ",";
// 校验物品标包信息
try {
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode());
purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit());
purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), purchaseDetailDO.getItemCode());
purchaseDetailDO.setSupplierUom(supplieritemDO.getSupplierUom());
purchaseDetailDO.setStdPackQty(supplieritemDO.getPackQty());
purchaseDetailDO.setConvertRate(supplieritemDO.getConvertRate());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验标准成本价格
try {
StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(createReqVO.getSupplierCode(), purchaseDetailDO.getItemCode());
purchaseDetailDO.setSinglePrice(stdcostpriceDO.getPrice());
if ("CNY".equals(stdcostpriceDO.getCurrency())) {
purchaseDetailDO.setAmount(purchaseDetailDO.getSinglePrice().multiply(purchaseDetailDO.getOrderQty()));
} else {
CurrencyexchangeDO currencyexchangeDO = currencyexchangeService.selectCurrencyexchangeExist(stdcostpriceDO.getCurrency(), "CNY");
purchaseDetailDO.setAmount(purchaseDetailDO.getSinglePrice().multiply(purchaseDetailDO.getOrderQty()).multiply(currencyexchangeDO.getRate()));
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验标准成本价格
try {
StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(createReqVO.getSupplierCode(), purchaseDetailCreateReqVO.getItemCode());
purchaseDetailCreateReqVO.setSinglePrice(stdcostpriceDO.getPrice());
if ("CNY".equals(stdcostpriceDO.getCurrency())) {
purchaseDetailCreateReqVO.setAmount(purchaseDetailCreateReqVO.getSinglePrice().multiply(purchaseDetailCreateReqVO.getOrderQty()));
} else {
CurrencyexchangeDO currencyexchangeDO = currencyexchangeService.selectCurrencyexchangeExist(stdcostpriceDO.getCurrency(), "CNY");
purchaseDetailCreateReqVO.setAmount(purchaseDetailCreateReqVO.getSinglePrice().multiply(purchaseDetailCreateReqVO.getOrderQty()).multiply(currencyexchangeDO.getRate()));
}
} catch (ServiceException ex) {
importRemark += ex.getMessage() + ",";
PurchaseDetailCreateReqVO purchaseDetailCreateReqVO = PurchaseDetailConvert.INSTANCE.convert1(purchaseDetailDO);
PurchaseMainImportErrorVO importVO = PurchaseDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
purchaseDetailDO.setMasterId(createReqVO.getId());
purchaseDetailDO.setShippedQty(new BigDecimal(0));
purchaseDetailDO.setReceivedQty(new BigDecimal(0));
purchaseDetailDO.setReturnedQty(new BigDecimal(0));
purchaseDetailDO.setPutawayQty(new BigDecimal(0));
purchaseDetailDO.setErpLocationCode(null);
purchaseDetailDO.setStatus(CommonStatusEnum.ENABLE.getStatus());
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
PurchaseMainDO existPurchaseclaimRequestMainDO = purchaseMainMapper.selectByNumber(createReqVO.getNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setOrderDate(LocalDateTime.now());
createReqVO.setVersion(null);
createReqVO.setTaxRate(null);
PurchaseMainDO createObj = PurchaseMainConvert.INSTANCE.convert(createReqVO);
purchaseMainMapper.insert(createObj);
purchaseDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setOrderDate(LocalDateTime.now());
createReqVO.setVersion(null);
createReqVO.setTaxRate(null);
PurchaseMainDO createObj = PurchaseMainConvert.INSTANCE.convert(createReqVO);
purchaseMainMapper.updateById(createObj);
purchaseDetailMapper.updateBatch(subDOList);
}
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
}

111
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java

@ -3,18 +3,29 @@ package com.win.module.wms.service.purchasePlan;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
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.module.wms.controller.purchasePlan.vo.*;
import com.win.module.wms.convert.purchasePlan.PurchasePlanDetailConvert;
import com.win.module.wms.convert.purchasePlan.PurchasePlanMainConvert;
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.purchasePlan.PurchasePlanDetailDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import com.win.module.wms.dal.dataobject.shift.ShiftDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanDetailMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -37,9 +48,16 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
@Resource
private PurchasePlanMainMapper purchasePlanMainMapper;
@Resource
private PurchasePlanDetailMapper purchasePlanDetailMapper;
@Resource
private ShiftService shiftService;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private JobUtils jobUtils;
@Override
public Long createPurchasePlanMain(PurchasePlanMainCreateReqVO createReqVO) {
@ -130,28 +148,79 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
List<PurchasePlanMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
PurchasePlanMainDO createObj =PurchasePlanMainConvert.INSTANCE.convert(createReqVO);
purchasePlanMainMapper.insert(createObj);
List< PurchasePlanDetailCreateReqVO> subList = createReqVO.getSubList();
List< PurchasePlanDetailDO> subDOList = PurchasePlanDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (PurchasePlanDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
String messageMain = "";
//主表的验证
//校验供应商基础信息
try {
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode());
BeanUtils.copyProperties(createReqVO, shiftDO);
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//子表的验证
List<PurchasePlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<PurchasePlanDetailDO> subDOList = PurchasePlanDetailConvert.INSTANCE.convertList03(subList);
for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode());
if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ",";
}
// purchasePlanDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), purchasePlanDetailDO.getItemCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
PurchasePlanDetailCreateReqVO purchasePlanDetailCreateReqVO = PurchasePlanDetailConvert.INSTANCE.convert1(purchasePlanDetailDO);
PurchasePlanMainImportErrorVO importVO = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchasePlanDetailDO.setNumber(createReqVO.getNumber());
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
PurchasePlanMainDO existPurchaseclaimRequestMainDO = purchasePlanMainMapper.selectByNumber(createReqVO.getNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
PurchasePlanMainDO createObj = PurchasePlanMainConvert.INSTANCE.convert(createReqVO);
purchasePlanMainMapper.insert(createObj);
purchasePlanDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
PurchasePlanMainDO createObj = PurchasePlanMainConvert.INSTANCE.convert(createReqVO);
purchasePlanMainMapper.updateById(createObj);
purchasePlanDetailMapper.updateBatch(subDOList);
}
}
purchasePlanDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java

@ -36,8 +36,10 @@ import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.purchase.PurchaseMainService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplier.SupplierService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
@ -90,6 +92,10 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
private PurchasereceiptJobDetailMapper purchasereceiptJobDetailMapper;
@Resource
private JobUtils jobUtils;
@Resource
private ShiftService shiftService;
@Resource
private PurchaseMainService purchaseMainService;
@Override
@Transactional

137
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java

@ -1,18 +1,30 @@
package com.win.module.wms.service.repleinshRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
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.module.wms.controller.repleinshRequest.vo.*;
import com.win.module.wms.convert.repleinshRequest.RepleinshRequestDetailConvert;
import com.win.module.wms.convert.repleinshRequest.RepleinshRequestMainConvert;
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.repleinshRequest.RepleinshRequestDetailDO;
import com.win.module.wms.dal.dataobject.repleinshRequest.RepleinshRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.repleinshRequest.RepleinshRequestDetailMapper;
import com.win.module.wms.dal.mysql.repleinshRequest.RepleinshRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -32,12 +44,25 @@ import static com.win.module.wms.enums.ErrorCodeConstants.REPLEINSH_REQUEST_MAIN
@Service
@Validated
public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainService {
@Resource
private RepleinshRequestMainMapper repleinshRequestMainMapper;
@Resource
private RepleinshRequestDetailMapper repleinshRequestDetailMapper;
@Resource
private ItembasicService itembasicService;
@Resource
private ItempackagingService itempackagingService;
@Resource
private ShiftService shiftService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private JobUtils jobUtils;
@Resource
private BusinesstypeService businesstypeService;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createRepleinshRequestMain(RepleinshRequestMainCreateReqVO createReqVO) {
@ -97,35 +122,111 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ
}
@Override
public List<RepleinshRequestMainImportErrorVO> importRepleinshRequestMainList(List<RepleinshRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public List<RepleinshRequestMainImportErrorVO> importRepleinshRequestMainList(List<RepleinshRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<RepleinshRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
String messageMain = "";
//主表的验证
//校验供应商基础信息
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode());
// BeanUtils.copyProperties(createReqVO, shiftDO);
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// messageMain += ex.getMessage() + ",";
// }
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
RepleinshRequestMainDO createObj =RepleinshRequestMainConvert.INSTANCE.convert(createReqVO);
repleinshRequestMainMapper.insert(createObj);
//子表的验证
List<RepleinshRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<RepleinshRequestDetailDO> subDOList = RepleinshRequestDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (RepleinshRequestDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
for (RepleinshRequestDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProjectCode(itembasicDO.getProject());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验业务类型相关属性
try {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentRequest");
jobUtils.selectItembasicExist(purchaseDetailDO.getItemCode(), businesstypeDO);
businesstypeService.selectBusinesstypeExist(purchaseDetailDO.getToLocationCode());
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes());
createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
RepleinshRequestDetailCreateReqVO purchaseDetailCreateReqVO = RepleinshRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO);
RepleinshRequestMainImportErrorVO importVO = RepleinshRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
purchaseDetailDO.setMasterId(createReqVO.getId());
purchaseDetailDO.setInventoryStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.INVENTORY_STATUS, "新增"));
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
if (mode != 3) {
createReqVO.setNumber("");
createReqVO.setStatus(null);
createReqVO.setFomWarehouseCode(null);
createReqVO.setToWarehouseCode(null);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
RepleinshRequestMainDO createObj = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO);
repleinshRequestMainMapper.insert(createObj);
repleinshRequestDetailMapper.insertBatch(subDOList);
} else if (mode != 2) {
createReqVO.setNumber("");
createReqVO.setStatus(null);
createReqVO.setFomWarehouseCode(null);
createReqVO.setToWarehouseCode(null);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
RepleinshRequestMainDO createObj = RepleinshRequestMainConvert.INSTANCE.convert(createReqVO);
repleinshRequestMainMapper.updateById(createObj);
repleinshRequestDetailMapper.updateBatch(subDOList);
}
}
repleinshRequestDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

115
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/sale/SaleMainServiceImpl.java

@ -3,19 +3,28 @@ package com.win.module.wms.service.sale;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.sale.vo.*;
import com.win.module.wms.convert.sale.SaleDetailConvert;
import com.win.module.wms.convert.sale.SaleMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.customer.CustomerDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.sale.SaleDetailDO;
import com.win.module.wms.dal.dataobject.sale.SaleMainDO;
import com.win.module.wms.dal.mysql.sale.SaleDetailMapper;
import com.win.module.wms.dal.mysql.sale.SaleMainMapper;
import com.win.module.wms.service.customer.CustomerService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -37,6 +46,15 @@ public class SaleMainServiceImpl implements SaleMainService {
private SaleMainMapper saleMainMapper;
@Resource
private SaleDetailMapper saleDetailMapper;
@Resource
private CustomerService customerService;
@Resource
private ItembasicService itembasicService;
@Resource
private JobUtils jobUtils;
@Override
public Long createSaleMain(SaleMainCreateReqVO createReqVO) {
// 插入
@ -122,27 +140,90 @@ public class SaleMainServiceImpl implements SaleMainService {
List<SaleMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
SaleMainDO createObj = SaleMainConvert.INSTANCE.convert(createReqVO);
saleMainMapper.insert(createObj);
String messageMain = "";
//主表的验证
//校验客户代码
try {
CustomerDO customerDO = customerService.selectCustomerExist(createReqVO.getCustomerCode());
if (customerDO==null) {
messageMain += "客户代码" + createReqVO.getCustomerCode() + "无效" + ",";
}
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//子表的验证
List<SaleDetailCreateReqVO> subList = createReqVO.getSubList();
List<SaleDetailDO> subDOList = SaleDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (SaleDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
for (SaleDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
} else {
// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
// purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProjectCode(itembasicDO.getProject());
}
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
}
purchaseDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
SaleDetailCreateReqVO purchaseDetailCreateReqVO =SaleDetailConvert.INSTANCE.convert1(purchaseDetailDO);
SaleMainImportErrorVO importVO =SaleDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
purchaseDetailDO.setStdPackQty(new BigDecimal(0));
purchaseDetailDO.setStdPackUnit(null);
purchaseDetailDO.setCustomerPackQty(new BigDecimal(0));
purchaseDetailDO.setCustomerPackUnit(null);
purchaseDetailDO.setConvertRate(new BigDecimal(0));
purchaseDetailDO.setShippedQty(new BigDecimal(0));
purchaseDetailDO.setReceivedQty(new BigDecimal(0));
purchaseDetailDO.setReturnedQty(new BigDecimal(0));
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
SaleMainDO existPurchaseclaimRequestMainDO = saleMainMapper.selectByNumber(createReqVO.getNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SaleOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
SaleMainDO createObj = SaleMainConvert.INSTANCE.convert(createReqVO);
saleMainMapper.insert(createObj);
saleDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SaleOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
SaleMainDO createObj = SaleMainConvert.INSTANCE.convert(createReqVO);
saleMainMapper.updateById(createObj);
saleDetailMapper.updateBatch(subDOList);
}
}
saleDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
}

150
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java

@ -1,18 +1,35 @@
package com.win.module.wms.service.supplierdeliverRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
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.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.supplierdeliverRequest.vo.*;
import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestDetailConvert;
import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestMainConvert;
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.purchasePlan.PurchasePlanDetailDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.shift.ShiftDO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestDetailMapper;
import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.purchasePlan.PurchasePlanMainService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -37,6 +54,20 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
private SupplierdeliverRequestMainMapper supplierdeliverRequestMainMapper;
@Resource
private SupplierdeliverRequestDetailMapper supplierdeliverRequestDetailMapper;
@Resource
private PurchasePlanMainService purchasePlanMainService;
@Resource
private ItembasicService itembasicService;
@Resource
private ShiftService shiftService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private JobUtils jobUtils;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createSupplierdeliverRequestMain(SupplierdeliverRequestMainCreateReqVO createReqVO) {
@ -103,28 +134,119 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq
List<SupplierdeliverRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
String messageMain = "";
//主表的验证
//校验供应商基础信息
try {
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode());
BeanUtils.copyProperties(createReqVO, shiftDO);
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//校验供应商送货策略
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null);
// String json = ruleRespVO.getConfiguration();
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO);
supplierdeliverRequestMainMapper.insert(createObj);
//子表的验证
List<SupplierdeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (SupplierdeliverRequestDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(supplierdeliverRequestDetailDO.getItemCode());
if (itembasicDO.getUom() != supplierdeliverRequestDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + supplierdeliverRequestDetailDO.getUom() + ",";
}
supplierdeliverRequestDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), supplierdeliverRequestDetailDO.getItemCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验要货计划
try {
PurchasePlanDetailDO purchasePlanDetailDO = purchasePlanMainService.selectPurchasePlan(createReqVO.getNumber(), createReqVO.getSupplierCode(),
supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode());
if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(supplierdeliverRequestDetailDO.getQty()) == -1) {
messageDetail += "供应商发货数量" + supplierdeliverRequestDetailDO.getQty() + "大于订单行" + supplierdeliverRequestDetailDO.getPoLine() + "的未发货数量" + purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty()) + ",";
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
SupplierdeliverRequestDetailCreateReqVO supplierdeliverRequestDetailCreateReqVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert1(supplierdeliverRequestDetailDO);
SupplierdeliverRequestMainImportErrorVO importVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO, supplierdeliverRequestDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
supplierdeliverRequestDetailDO.setNumber(createReqVO.getNumber());
supplierdeliverRequestDetailDO.setMasterId(createReqVO.getId());
supplierdeliverRequestDetailDO.setAltBatch("");
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
SupplierdeliverRequestMainDO existPurchaseclaimRequestMainDO = supplierdeliverRequestMainMapper.selectByNumberAndAsnNumber(createReqVO.getNumber(), createReqVO.getAsnNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("SupplierDeliverRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO);
supplierdeliverRequestMainMapper.insert(createObj);
supplierdeliverRequestDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("SupplierDeliverRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO);
supplierdeliverRequestMainMapper.updateById(createObj);
supplierdeliverRequestDetailMapper.updateBatch(subDOList);
}
}
supplierdeliverRequestDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

24
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java

@ -1,15 +1,13 @@
package com.win.module.wms.service.transferissueRequest;
import java.util.*;
import javax.validation.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainCreateReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainExportReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainPageReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.transferissueRequest.vo.*;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
* 调拨出库申请主 Service 接口
@ -79,4 +77,14 @@ public interface TransferissueRequestMainService {
*/
List<TransferissueRequestMainDO> getTransferissueRequestMainList(TransferissueRequestMainExportReqVO exportReqVO);
/**
* 批量导入采计划外入库信息
* @param datas 导入计划外入库主信息列表
* @param mode 导入模式1更新2追加3覆盖
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<TransferissueRequestMainImportErrorVO> importTransferissueRequestMainList(List<TransferissueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
}

177
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java

@ -1,24 +1,43 @@
package com.win.module.wms.service.transferissueRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainCreateReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainExportReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainPageReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainUpdateReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import com.win.framework.common.pojo.PageResult;
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.transferissueRequest.vo.*;
import com.win.module.wms.convert.transferissueRequest.TransferissueRequestDetailConvert;
import com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert;
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.dataobject.transferissueRequest.TransferissueRequestDetailDO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import com.win.module.wms.dal.mysql.transferissueRequest.TransferissueRequestDetailMapper;
import com.win.module.wms.dal.mysql.transferissueRequest.TransferissueRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
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.*;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.ErrorCodeConstants.TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS;
/**
* 调拨出库申请主 Service 实现类
@ -31,6 +50,25 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
@Resource
private TransferissueRequestMainMapper transferissueRequestMainMapper;
@Resource
private TransferissueRequestDetailMapper transferissueRequestDetailMapper;
@Resource
private ShiftService shiftService;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private JobUtils jobUtils;
@Resource
private LocationService locationService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private RequestsettingService requestsettingService;
@Resource
private BusinesstypeService businesstypeService;
@Override
public Long createTransferissueRequestMain(TransferissueRequestMainCreateReqVO createReqVO) {
@ -49,6 +87,7 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
TransferissueRequestMainDO updateObj = TransferissueRequestMainConvert.INSTANCE.convert(updateReqVO);
transferissueRequestMainMapper.updateById(updateObj);
}
@Override
public PageResult<TransferissueRequestMainDO> getTransferissueRequestMainSenior(CustomConditions conditions) {
return transferissueRequestMainMapper.selectSenior(conditions);
@ -88,4 +127,116 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
return transferissueRequestMainMapper.selectList(exportReqVO);
}
public List<TransferissueRequestMainImportErrorVO> importTransferissueRequestMainList(List<TransferissueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<TransferissueRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//子表的验证
List<TransferissueRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<TransferissueRequestDetailDO> subDOList = TransferissueRequestDetailConvert.INSTANCE.convertList03(subList);
for (TransferissueRequestDetailDO purchasePlanDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode());
if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ",";
} else {
purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1());
purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2());
purchasePlanDetailDO.setItemName(itembasicDO.getName());
purchasePlanDetailDO.setProjectCode(itembasicDO.getProject());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验业务类型
try {
BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist("UnplannedReceipt");
jobUtils.ifInToLocationType(purchasePlanDetailDO.getToLocationCode(), businesstypeDO);
// jobUtils.ifInToLocationType(createReqVO.GETf(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(purchasePlanDetailDO.getInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验库存余额是否存在
try {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(purchasePlanDetailDO.getInventoryStatus());
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchasePlanDetailDO.getItemCode(), purchasePlanDetailDO.getPackingNumber()
, purchasePlanDetailDO.getBatch(), purchasePlanDetailDO.getToLocationCode(), inventoryStatus);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
TransferissueRequestDetailCreateReqVO purchasePlanDetailCreateReqVO = TransferissueRequestDetailConvert.INSTANCE.convert1(purchasePlanDetailDO);
TransferissueRequestMainImportErrorVO importVO = TransferissueRequestDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchasePlanDetailDO.setNumber(createReqVO.getNumber());
purchasePlanDetailDO.setMasterId(createReqVO.getId());
}
}
if (errorList.isEmpty()) {
TransferissueRequestMainDO existPurchaseclaimRequestMainDO = transferissueRequestMainMapper.selectByCarrierCode(createReqVO.getCarrierCode());
// 判断如果不存在,在进行插入
if (existPurchaseclaimRequestMainDO == null &&mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
TransferissueRequestMainDO createObj = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO);
transferissueRequestMainMapper.insert(createObj);
transferissueRequestDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO == null &&mode != 2) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode());
createReqVO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
TransferissueRequestMainDO createObj = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO);
transferissueRequestMainMapper.updateById(createObj);
transferissueRequestDetailMapper.updateBatch(subDOList);
}
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
}

25
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainService.java

@ -1,15 +1,13 @@
package com.win.module.wms.service.unplannedreceiptRequest;
import java.util.*;
import javax.validation.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainCreateReqVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainExportReqVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainPageReqVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.*;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
* 计划外入库申请主 Service 接口
@ -80,4 +78,15 @@ public interface UnplannedreceiptRequestMainService {
*/
List<UnplannedreceiptRequestMainDO> getUnplannedreceiptRequestMainList(UnplannedreceiptRequestMainExportReqVO exportReqVO);
/**
* 批量导入采计划外入库信息
* @param datas 导入计划外入库主信息列表
* @param mode 导入模式1更新2追加3覆盖
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<UnplannedreceiptRequestMainImportErrorVO> importUnplannedreceiptRequestMainList(List<UnplannedreceiptRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
}

174
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/unplannedreceiptRequest/UnplannedreceiptRequestMainServiceImpl.java

@ -1,24 +1,43 @@
package com.win.module.wms.service.unplannedreceiptRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainCreateReqVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainExportReqVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainPageReqVO;
import com.win.module.wms.controller.unplannedreceiptRequest.vo.UnplannedreceiptRequestMainUpdateReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO;
import com.win.framework.common.pojo.PageResult;
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.unplannedreceiptRequest.vo.*;
import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestDetailConvert;
import com.win.module.wms.convert.unplannedreceiptRequest.UnplannedreceiptRequestMainConvert;
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.location.LocationDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.unplannedreceiptRequest.UnplannedreceiptRequestMainDO;
import com.win.module.wms.dal.mysql.unplannedreceiptRequest.UnplannedreceiptRequestDetailMapper;
import com.win.module.wms.dal.mysql.unplannedreceiptRequest.UnplannedreceiptRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.businesstype.BusinesstypeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
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.*;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY;
import static com.win.module.wms.enums.ErrorCodeConstants.UNPLANNEDRECEIPT_REQUEST_MAIN_NOT_EXISTS;
/**
* 计划外入库申请主 Service 实现类
@ -31,6 +50,25 @@ public class UnplannedreceiptRequestMainServiceImpl implements UnplannedreceiptR
@Resource
private UnplannedreceiptRequestMainMapper unplannedreceiptRequestMainMapper;
@Resource
private UnplannedreceiptRequestDetailMapper unplannedreceiptRequestDetailMapper;
@Resource
private ShiftService shiftService;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private JobUtils jobUtils;
@Resource
private LocationService locationService;
@Resource
private BusinesstypeService businesstypeService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createUnplannedreceiptRequestMain(UnplannedreceiptRequestMainCreateReqVO createReqVO) {
@ -49,10 +87,12 @@ public class UnplannedreceiptRequestMainServiceImpl implements UnplannedreceiptR
UnplannedreceiptRequestMainDO updateObj = UnplannedreceiptRequestMainConvert.INSTANCE.convert(updateReqVO);
unplannedreceiptRequestMainMapper.updateById(updateObj);
}
@Override
public PageResult<UnplannedreceiptRequestMainDO> getUnplannedreceiptRequestMainSenior(CustomConditions conditions) {
return unplannedreceiptRequestMainMapper.selectSenior(conditions);
}
@Override
public void deleteUnplannedreceiptRequestMain(Long id) {
// 校验存在
@ -87,4 +127,112 @@ public class UnplannedreceiptRequestMainServiceImpl implements UnplannedreceiptR
return unplannedreceiptRequestMainMapper.selectList(exportReqVO);
}
public List<UnplannedreceiptRequestMainImportErrorVO> importUnplannedreceiptRequestMainList(List<UnplannedreceiptRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<UnplannedreceiptRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//子表的验证
List<UnplannedreceiptRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<UnplannedreceiptRequestDetailDO> subDOList = UnplannedreceiptRequestDetailConvert.INSTANCE.convertList03(subList);
for (UnplannedreceiptRequestDetailDO purchasePlanDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode());
if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ",";
} else {
purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1());
purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2());
purchasePlanDetailDO.setItemName(itembasicDO.getName());
purchasePlanDetailDO.setProjectCode(itembasicDO.getProject());
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
//校验库位基础信息
try {
LocationDO locationDO = locationService.selectLocation(purchasePlanDetailDO.getToLocationCode());
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
// 校验业务类型
try {
BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist("UnplannedReceipt");
jobUtils.ifInToLocationType(purchasePlanDetailDO.getToLocationCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(purchasePlanDetailDO.getInventoryStatus(), businesstypeDO);
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
UnplannedreceiptRequestDetailCreateReqVO purchasePlanDetailCreateReqVO = UnplannedreceiptRequestDetailConvert.INSTANCE.convert1(purchasePlanDetailDO);
UnplannedreceiptRequestMainImportErrorVO importVO = UnplannedreceiptRequestDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchasePlanDetailDO.setNumber(createReqVO.getNumber());
purchasePlanDetailDO.setMasterId(createReqVO.getId());
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
if (mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("UnplannedReceiptRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.UNPLANNED_RECEIPT_REQUEST.getCode());
createReqVO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("UnplannedReceiptRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
UnplannedreceiptRequestMainDO createObj = UnplannedreceiptRequestMainConvert.INSTANCE.convert(createReqVO);
unplannedreceiptRequestMainMapper.insert(createObj);
unplannedreceiptRequestDetailMapper.insertBatch(subDOList);
} else if (mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("UnplannedReceiptRequest");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
String number = serialNumberApi.generateCode(RuleCodeEnum.UNPLANNED_RECEIPT_REQUEST.getCode());
createReqVO.setNumber(number);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("UnplannedReceiptRequest");
if (requestsettingDO != null) {
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree());
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit());
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
UnplannedreceiptRequestMainDO createObj = UnplannedreceiptRequestMainConvert.INSTANCE.convert(createReqVO);
unplannedreceiptRequestMainMapper.updateById(createObj);
unplannedreceiptRequestDetailMapper.updateBatch(subDOList);
}
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
}

165
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java

@ -3,16 +3,30 @@ package com.win.module.wms.service.work;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.work.vo.*;
import com.win.module.wms.convert.work.WorkDetailConvert;
import com.win.module.wms.convert.work.WorkMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.customeritem.CustomeritemDO;
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.saleprice.SalepriceDO;
import com.win.module.wms.dal.dataobject.work.WorkDetailDO;
import com.win.module.wms.dal.dataobject.work.WorkMainDO;
import com.win.module.wms.dal.mysql.work.WorkDetailMapper;
import com.win.module.wms.dal.mysql.work.WorkMainMapper;
import com.win.module.wms.service.customeritem.CustomeritemService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.saleprice.SalepriceService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -35,9 +49,22 @@ public class WorkMainServiceImpl implements WorkMainService {
@Resource
private WorkMainMapper workMainMapper;
@Resource
private WorkDetailMapper workDetailMapper;
@Resource
private ItembasicService itembasicService;
@Resource
private ItempackagingService itempackagingService;
@Resource
private ShiftService shiftService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private CustomeritemService customeritemService;
@Resource
private SalepriceService salepriceService;
@Resource
private JobUtils jobUtils;
@Override
public Long createWorkMain(WorkMainCreateReqVO createReqVO) {
@ -85,6 +112,7 @@ public class WorkMainServiceImpl implements WorkMainService {
public PageResult<WorkMainDO> getWorkMainPage(WorkMainPageReqVO pageReqVO) {
return workMainMapper.selectPage(pageReqVO);
}
@Override
public PageResult<WorkMainDO> getWorkMainSenior(CustomConditions conditions) {
return workMainMapper.selectSenior(conditions);
@ -96,52 +124,133 @@ public class WorkMainServiceImpl implements WorkMainService {
}
@Override
public WorkDetailDO selectWorkExist(String pnumber, String pitemCode){
public WorkDetailDO selectWorkExist(String pnumber, String pitemCode) {
QueryWrapper queryWrapperMain = new QueryWrapper();
queryWrapperMain.eq("number",pnumber);
queryWrapperMain.eq("available","TURE");
queryWrapperMain.eq("number", pnumber);
queryWrapperMain.eq("available", "TURE");
WorkMainDO workMainDO = workMainMapper.selectOne(queryWrapperMain);
if(workMainDO != null){
if (workMainDO != null) {
QueryWrapper queryWrapperDetail = new QueryWrapper();
queryWrapperDetail.eq("item_code",pitemCode);
queryWrapperDetail.eq("item_code", pitemCode);
WorkDetailDO workDetailDO = workDetailMapper.selectOne(queryWrapperDetail);
if(workDetailDO != null){
if (workDetailDO != null) {
return workDetailDO;
}else {
throw new UtilException("生产订单明细:"+ pitemCode + "无效");
} else {
throw new UtilException("生产订单明细:" + pitemCode + "无效");
}
}throw exception(WORK_MAIN_NOT_EXISTS);
}
throw exception(WORK_MAIN_NOT_EXISTS);
}
@Override
public List<WorkMainImportErrorVO> importWorkMainList(List<WorkMainCreateReqVO> datas, Integer mode, boolean updatePart) {
public List<WorkMainImportErrorVO> importWorkMainList(List<WorkMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<WorkMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
boolean isError = false;
// try {
// if(mode != null){
// validatePurchaseclaimRequestMainExists(null);
// }
// } catch (ServiceException ex) {
// isError = true;
// importRemark += ex.getMessage() + ",";
// }
WorkMainDO createObj = WorkMainConvert.INSTANCE.convert(createReqVO);
workMainMapper.insert(createObj);
String messageMain = "";
//主表的验证
//子表的验证
List<WorkDetailCreateReqVO> subList = createReqVO.getSubList();
List<WorkDetailDO> subDOList = WorkDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (WorkDetailDO detailDO : subDOList) {
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
detailDO.setNumber(createReqVO.getNumber());
for (WorkDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
} else {
// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
// purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProjectCode(itembasicDO.getProject());
}
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
}
purchaseDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验物品标包信息
try {
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode());
// purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit());
// purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验客户物品基础信息
try {
CustomeritemDO customeritemDO = customeritemService.selectCustomeritemExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode());
if (customeritemDO == null) {
messageDetail += "未查找到客户" + createReqVO.getCustomerCode() + "与物品" + purchaseDetailDO.getItemCode() + "的对应关系" + ",";
} else {
//根据customeritemdto赋值
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验销售价格
try {
SalepriceDO salepriceDO = salepriceService.selectItemPackagingExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode());
if (salepriceDO != null) {
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
WorkDetailCreateReqVO purchaseDetailCreateReqVO = WorkDetailConvert.INSTANCE.convert1(purchaseDetailDO);
WorkMainImportErrorVO importVO = WorkDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
// purchaseDetailDO.setMasterId(createReqVO.getId());
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
WorkMainDO existPurchaseclaimRequestMainDO = workMainMapper.selectByNumber(createReqVO.getNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setType(null);
createReqVO.setVersion(null);
createReqVO.setCurrentStage(null);
WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO);
workMainMapper.insert(createObj);
workDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
createReqVO.setType(null);
createReqVO.setVersion(null);
createReqVO.setCurrentStage(null);
WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO);
workMainMapper.updateById(createObj);
workDetailMapper.updateBatch(subDOList);
}
}
workDetailMapper.insertBatch(subDOList);
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
}

Loading…
Cancel
Save