Browse Source

Merge remote-tracking branch 'origin/master'

master
赵雪冰 2 years ago
parent
commit
06eefdb5b3
  1. 18
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagemergemain/PackagemergeMainController.java
  3. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagemergemain/vo/PackagemergeMainBaseVO.java
  4. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagemergemain/vo/PackagemergeMainCreateReqVO.java
  5. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagemergemain/vo/PackagemergeMainPageReqVO.java
  6. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageovermain/PackageoverMainController.java
  7. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageovermain/vo/PackageoverMainBaseVO.java
  8. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageovermain/vo/PackageoverMainCreateReqVO.java
  9. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageovermain/vo/PackageoverMainPageReqVO.java
  10. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagesplitmain/PackagesplitMainController.java
  11. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagesplitmain/vo/PackagesplitMainBaseVO.java
  12. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagesplitmain/vo/PackagesplitMainCreateReqVO.java
  13. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagesplitmain/vo/PackagesplitMainPageReqVO.java
  14. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnJob/vo/PurchasereturnJobDetailBaseVO.java
  15. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestDetailBaseVO.java
  16. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordMainBaseVO.java
  17. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/packageMassage/PackageConvert.java
  18. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/packagemergemain/PackagemergeDetailConvert.java
  19. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/packageovermain/PackageoverDetailConvert.java
  20. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/packagesplitmain/PackagesplitDetailConvert.java
  21. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java
  22. 32
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java
  23. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java
  24. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java
  25. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java
  26. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/expectout/ExpectoutService.java
  27. 32
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/expectout/ExpectoutServiceImpl.java
  28. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java
  29. 78
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java
  30. 32
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java
  31. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packagemergemain/PackagemergeMainService.java
  32. 189
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packagemergemain/PackagemergeMainServiceImpl.java
  33. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageovermain/PackageoverMainService.java
  34. 247
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageovermain/PackageoverMainServiceImpl.java
  35. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packagesplitmain/PackagesplitMainService.java
  36. 193
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packagesplitmain/PackagesplitMainServiceImpl.java
  37. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java
  38. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java
  39. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java
  40. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java
  41. 75
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java

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

@ -1020,14 +1020,14 @@ public interface ErrorCodeConstants {
//盘点申请ErrorCode
ErrorCode COUNT_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_153_000, "盘点申请主不存在");
ErrorCode COUNT_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_153_001, "盘点申请子不存在");
ErrorCode COUNT_REQUEST_STATUS_NOT_NEW = new ErrorCode(1_000_073_003, "盘点不是新增状态");
ErrorCode COUNT_REQUEST_JOB_EXISTS = new ErrorCode(1_000_073_004, "盘点存在采购收货任务单");
ErrorCode COUNT_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_073_005, "盘点状态不支持关闭");
ErrorCode COUNT_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_073_006, "盘点状态不支持提交");
ErrorCode COUNT_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_073_007, "盘点状态不支持审批同意");
ErrorCode COUNT_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_073_008, "盘点状态不支持处理");
ErrorCode COUNT_REQUEST_CANNOT_REFUSED = new ErrorCode(1_000_073_009, "盘点状态不支持审批拒绝");
ErrorCode COUNT_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_073_010, "盘点状态不支持重新添加");
ErrorCode COUNT_REQUEST_STATUS_NOT_NEW = new ErrorCode(1_000_073_003, "盘点申请不是新增状态");
ErrorCode COUNT_REQUEST_JOB_EXISTS = new ErrorCode(1_000_073_004, "盘点申请存在盘点任务单");
ErrorCode COUNT_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_073_005, "盘点申请状态不支持关闭");
ErrorCode COUNT_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_073_006, "盘点申请状态不支持提交");
ErrorCode COUNT_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_073_007, "盘点申请状态不支持审批同意");
ErrorCode COUNT_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_073_008, "盘点申请状态不支持处理");
ErrorCode COUNT_REQUEST_CANNOT_REFUSED = new ErrorCode(1_000_073_009, "盘点申请状态不支持审批拒绝");
ErrorCode COUNT_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_073_010, "盘点申请状态不支持重新添加");
//盘点任务ErrorCode
ErrorCode COUNT_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_154_000, "盘点任务主不存在");
ErrorCode COUNT_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_154_001, "盘点任务子不存在");
@ -1102,6 +1102,8 @@ public interface ErrorCodeConstants {
// 翻包记录子
ErrorCode PACKAGEOVER_DETAIL_NOT_EXISTS = new ErrorCode(1_000_170_002, "翻包记录子不存在");
ErrorCode PACKAGEOVER_DETAIL_PACKING_ERROR = new ErrorCode(1_000_170_002, "请先配置【基础包装信息】【替代包装数1】");
// 拆包记录主
ErrorCode PACKAGESPLIT_MAIN_NOT_EXISTS = new ErrorCode(1_000_171_001, "拆包记录主不存在");
// 拆包记录子

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagemergemain/PackagemergeMainController.java

@ -52,7 +52,7 @@ public class PackagemergeMainController {
@PostMapping("/create")
@Operation(summary = "创建合包记录主")
@PreAuthorize("@ss.hasPermission('wms:packagemerge-main:create')")
public CommonResult<Long> createPackagemergeMain(@Valid @RequestBody PackagemergeMainCreateReqVO createReqVO) {
public CommonResult<String> createPackagemergeMain(@Valid @RequestBody PackagemergeMainCreateReqVO createReqVO) {
return success(packagemergeMainService.createPackagemergeMain(createReqVO));
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagemergemain/vo/PackagemergeMainBaseVO.java

@ -21,6 +21,9 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@Data
public class PackagemergeMainBaseVO {
@Schema(description = "id", example = "id")
private Long id;
@Schema(description = "仓库代码")
private String warehouseCode;

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagemergemain/vo/PackagemergeMainCreateReqVO.java

@ -1,5 +1,7 @@
package com.win.module.wms.controller.packagemergemain.vo;
import com.win.framework.excel.core.annotations.SubObject;
import com.win.module.wms.controller.production.vo.ProductionDetailCreateReqVO;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
@ -11,4 +13,7 @@ import javax.validation.constraints.*;
@ToString(callSuper = true)
public class PackagemergeMainCreateReqVO extends PackagemergeMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<PackagemergeDetailCreateReqVO> subList;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagemergemain/vo/PackagemergeMainPageReqVO.java

@ -15,6 +15,9 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@ToString(callSuper = true)
public class PackagemergeMainPageReqVO extends PageParam {
@Schema(description = "id", example = "id")
private Long id;
@Schema(description = "仓库代码")
private String warehouseCode;

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageovermain/PackageoverMainController.java

@ -52,7 +52,7 @@ public class PackageoverMainController {
@PostMapping("/create")
@Operation(summary = "创建翻包记录主")
@PreAuthorize("@ss.hasPermission('wms:packageover-main:create')")
public CommonResult<Long> createPackageoverMain(@Valid @RequestBody PackageoverMainCreateReqVO createReqVO) {
public CommonResult<String> createPackageoverMain(@Valid @RequestBody PackageoverMainCreateReqVO createReqVO) {
return success(packageoverMainService.createPackageoverMain(createReqVO));
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageovermain/vo/PackageoverMainBaseVO.java

@ -21,6 +21,8 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@Data
public class PackageoverMainBaseVO {
@Schema(description = "id", example = "id")
private Long id;
@Schema(description = "仓库代码")
private String warehouseCode;

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageovermain/vo/PackageoverMainCreateReqVO.java

@ -1,5 +1,7 @@
package com.win.module.wms.controller.packageovermain.vo;
import com.win.framework.excel.core.annotations.SubObject;
import com.win.module.wms.controller.packagemergemain.vo.PackagemergeDetailCreateReqVO;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
@ -10,5 +12,7 @@ import javax.validation.constraints.*;
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PackageoverMainCreateReqVO extends PackageoverMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<PackagemergeDetailCreateReqVO> subList;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageovermain/vo/PackageoverMainPageReqVO.java

@ -15,6 +15,9 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@ToString(callSuper = true)
public class PackageoverMainPageReqVO extends PageParam {
@Schema(description = "id", example = "id")
private Long id;
@Schema(description = "仓库代码")
private String warehouseCode;

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagesplitmain/PackagesplitMainController.java

@ -52,7 +52,7 @@ public class PackagesplitMainController {
@PostMapping("/create")
@Operation(summary = "创建拆包记录主")
@PreAuthorize("@ss.hasPermission('wms:packagesplit-main:create')")
public CommonResult<Long> createPackagesplitMain(@Valid @RequestBody PackagesplitMainCreateReqVO createReqVO) {
public CommonResult<String> createPackagesplitMain(@Valid @RequestBody PackagesplitMainCreateReqVO createReqVO) {
return success(packagesplitMainService.createPackagesplitMain(createReqVO));
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagesplitmain/vo/PackagesplitMainBaseVO.java

@ -21,6 +21,8 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@Data
public class PackagesplitMainBaseVO {
@Schema(description = "id", example = "id")
private Long id;
@Schema(description = "仓库代码")
private String warehouseCode;

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagesplitmain/vo/PackagesplitMainCreateReqVO.java

@ -1,5 +1,7 @@
package com.win.module.wms.controller.packagesplitmain.vo;
import com.win.framework.excel.core.annotations.SubObject;
import com.win.module.wms.controller.packagemergemain.vo.PackagemergeDetailCreateReqVO;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
@ -10,5 +12,7 @@ import javax.validation.constraints.*;
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PackagesplitMainCreateReqVO extends PackagesplitMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<PackagesplitDetailCreateReqVO> subList;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packagesplitmain/vo/PackagesplitMainPageReqVO.java

@ -15,6 +15,9 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
@ToString(callSuper = true)
public class PackagesplitMainPageReqVO extends PageParam {
@Schema(description = "id", example = "id")
private Long id;
@Schema(description = "仓库代码")
private String warehouseCode;

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnJob/vo/PurchasereturnJobDetailBaseVO.java

@ -54,8 +54,7 @@ public class PurchasereturnJobDetailBaseVO {
@Schema(description = "订单行")
private String poLine;
@Schema(description = "原因", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "原因不能为空")
@Schema(description = "原因")
private String reason;
@Schema(description = "物品代码")

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestDetailBaseVO.java

@ -50,8 +50,7 @@ public class PurchasereturnRequestDetailBaseVO {
@Schema(description = "订单行")
private String poLine;
@Schema(description = "原因", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "原因不能为空")
@Schema(description = "原因")
private String reason;
@Schema(description = "单据号")

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/repleinshRecord/vo/RepleinshRecordMainBaseVO.java

@ -22,8 +22,7 @@ public class RepleinshRecordMainBaseVO {
@Schema(description = "id", example = "id")
private Long id;
@Schema(description = "申请单号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "申请单号不能为空")
@Schema(description = "申请单号")
private String requestNumber;
@Schema(description = "任务单号")

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/packageMassage/PackageConvert.java

@ -34,4 +34,6 @@ public interface PackageConvert {
PageResult<PackageRespVO> convertPage(PageResult<PackageDO> page);
List<PackageExcelVO> convertList02(List<PackageDO> list);
PackageCreateReqVO convert01(PackageDO labelExist);
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/packagemergemain/PackagemergeDetailConvert.java

@ -31,4 +31,5 @@ public interface PackagemergeDetailConvert {
List<PackagemergeDetailExcelVO> convertList02(List<PackagemergeDetailDO> list);
List<PackagemergeDetailDO> convertList03(List<PackagemergeDetailCreateReqVO> subList);
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/packageovermain/PackageoverDetailConvert.java

@ -4,6 +4,7 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.packagemergemain.vo.PackagemergeDetailCreateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.controller.packageovermain.vo.*;
@ -31,4 +32,5 @@ public interface PackageoverDetailConvert {
List<PackageoverDetailExcelVO> convertList02(List<PackageoverDetailDO> list);
List<PackageoverDetailDO> convertList03(List<PackagemergeDetailCreateReqVO> subList);
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/packagesplitmain/PackagesplitDetailConvert.java

@ -31,4 +31,5 @@ public interface PackagesplitDetailConvert {
List<PackagesplitDetailExcelVO> convertList02(List<PackagesplitDetailDO> list);
List<PackagesplitDetailDO> convertList03(List<PackagesplitDetailCreateReqVO> subList);
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java

@ -50,7 +50,7 @@ public interface BalanceService {
* @param locationCode 库位code
* @return
*/
List<BalanceDO> selectNumber(String itemCode, List<String> inventoryStatus, String locationCode);
List<BalanceDO> selectByNumber(String itemCode, List<String> inventoryStatus, String locationCode);
/**
* TB2----BY_BATCH
* 跟据管理模式查询批次
@ -61,7 +61,7 @@ public interface BalanceService {
* @param locationCode 库位code
* @return
*/
List<BalanceDO> selectBatch(String itemCode, String batch, List<String> inventoryStatus, String locationCode);
List<BalanceDO> selectByBatch(String itemCode, String batch, List<String> inventoryStatus, String locationCode);
/**
* TB2----BY_PACKAGING
* 跟据管理模式查询包装号
@ -73,7 +73,7 @@ public interface BalanceService {
* @param locationCode 库位code
* @return
*/
List<BalanceDO> selectPackaging(String itemCode, String packingNumber, String batch, List<String> inventoryStatus, String locationCode);
List<BalanceDO> selectByPackaging(String itemCode, String packingNumber, String batch, List<String> inventoryStatus, String locationCode);
/**
* TB2----BY_UNIQUE_ID
* 跟据管理模式查询唯一码
@ -83,7 +83,7 @@ public interface BalanceService {
* @param locationCode 库位code
* @return
*/
List<BalanceDO> selectUniqueId(String packingNumber, String locationCode, List<String> inventoryStatus);
List<BalanceDO> selectByUniqueId(String packingNumber, String locationCode, List<String> inventoryStatus);
void updateBalance(BalanceUpdateReqVO updateReqVO);
/**

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

@ -92,16 +92,16 @@ public class BalanceServiceImpl implements BalanceService {
* @return
*/
@Override
public List<BalanceDO> selectNumber(String itemCode, List<String> inventoryStatus, String locationCode) {
public List<BalanceDO> selectByNumber(String itemCode, List<String> inventoryStatus, String locationCode) {
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("item_code", itemCode);
queryWrapper.in("inventory_status", inventoryStatus);
queryWrapper.eq("location_code", locationCode);
queryWrapper.eq("packing_number","");
queryWrapper.eq("batch","");
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if (!balanceDO.isEmpty()) {
return balanceDO;
List<BalanceDO> balanceDOList = balanceMapper.selectList(queryWrapper);
if (!balanceDOList.isEmpty()) {
return balanceDOList;
}else {
return null;
}
@ -118,7 +118,7 @@ public class BalanceServiceImpl implements BalanceService {
* @return
*/
@Override
public List<BalanceDO> selectBatch(String itemCode, String batch, List<String> inventoryStatus, String locationCode) {
public List<BalanceDO> selectByBatch(String itemCode, String batch, List<String> inventoryStatus, String locationCode) {
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("item_code", itemCode);
if (batch == null || batch.isEmpty()) {
@ -126,9 +126,9 @@ public class BalanceServiceImpl implements BalanceService {
}
queryWrapper.in("inventory_status", inventoryStatus);
queryWrapper.eq("location_code", locationCode);
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if (!balanceDO.isEmpty()) {
return balanceDO;
List<BalanceDO> balanceDOList = balanceMapper.selectList(queryWrapper);
if (!balanceDOList.isEmpty()) {
return balanceDOList;
}else {
return null;
}
@ -148,16 +148,16 @@ public class BalanceServiceImpl implements BalanceService {
* @return
*/
@Override
public List<BalanceDO> selectPackaging(String itemCode, String packingNumber, String batch, List<String> inventoryStatus, String locationCode) {
public List<BalanceDO> selectByPackaging(String itemCode, String packingNumber, String batch, List<String> inventoryStatus, String locationCode) {
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("item_code", itemCode);
queryWrapper.eq("packing_number", packingNumber);
queryWrapper.eq("batch", batch);
queryWrapper.in("inventory_status", inventoryStatus);
queryWrapper.eq("location_code", locationCode);
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if (!balanceDO.isEmpty()) {
return balanceDO;
List<BalanceDO> balanceDOList = balanceMapper.selectList(queryWrapper);
if (!balanceDOList.isEmpty()) {
return balanceDOList;
}else {
return null;
}
@ -173,14 +173,14 @@ public class BalanceServiceImpl implements BalanceService {
* @return
*/
@Override
public List<BalanceDO> selectUniqueId(String packingnumber, String locationcode, List<String> inventoryStatus) {
public List<BalanceDO> selectByUniqueId(String packingnumber, String locationcode, List<String> inventoryStatus) {
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("packing_number", packingnumber);
queryWrapper.in("inventory_status", inventoryStatus);
queryWrapper.eq("location_code", locationcode);
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if (!balanceDO.isEmpty()) {
return balanceDO;
List<BalanceDO> balanceDOList = balanceMapper.selectList(queryWrapper);
if (!balanceDOList.isEmpty()) {
return balanceDOList;
}else {
return null;
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java

@ -681,18 +681,19 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque
//查询出已经退货完的记录主表下的子表数据
BigDecimal qty = BigDecimal.ZERO;
for (CustomerreturnRecordDetailDO customerreturnRecordDetailDO : customerreturnRecordDetailDOS) {
//校验"当前客户退货记录子表"物品与"客户退货申请子表"物品是否一致
if (deliver.getItemCode().equals(detailDO.getItemCode()) && deliver.getBatch().equals(detailDO.getBatch())
&& deliver.getPackingNumber().equals(detailDO.getPackingNumber())) {
//校验"当前客户退货记录子表"物品与"数据库里已退货的客户退货记录子表"物品是否一致
if (deliver.getItemCode().equals(customerreturnRecordDetailDO.getItemCode()) && deliver.getBatch().equals(customerreturnRecordDetailDO.getFromBatch())
&& deliver.getPackingNumber().equals(customerreturnRecordDetailDO.getFromPackingNumber())) {
hashMap.put(detailDO.getId(), qty = qty.add(customerreturnRecordDetailDO.getQty()));
}
}
}
if (hashMap.get(detailDO.getId()) != null) {
if (deliver.getQty().compareTo((hashMap.get(detailDO.getId())).add(detailDO.getQty())) == -1) {
throw exception(QTY_EXCEPTION, "当前客户退货申请单" + detailDO.getId() + "的退货数量已超出当前发货记录的发货数量" + (hashMap.get(detailDO.getId())).add(detailDO.getQty()).subtract(deliver.getQty()) + "个");
throw exception(QTY_EXCEPTION, "当前客户退货申请单" + detailDO.getId() + "的该物品" + detailDO.getItemCode() + "】已全部退货,超出当前发货记录的发货数量" + (hashMap.get(detailDO.getId())).add(detailDO.getQty()).subtract(deliver.getQty()) + "个");
}
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java

@ -272,7 +272,7 @@ public class DeliverJobMainServiceImpl implements DeliverJobMainService {
//创建客户收货记录主表
DeliverRecordMainDO deliverRecordMainDO = new DeliverRecordMainDO();
BeanUtils.copyProperties(deliverJobMainDO, deliverRecordMainDO);
String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_JOB.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_RECORD.getCode());
deliverRecordMainDO.setNumber(number);
deliverRecordMainDO.setJobNumber(deliverJobMainDO.getNumber());
deliverRecordMainDO.setId(null);

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java

@ -48,7 +48,6 @@ import com.win.module.wms.service.customer.CustomerService;
import com.win.module.wms.service.customerdock.CustomerdockService;
import com.win.module.wms.service.deliverJob.DeliverJobMainService;
import com.win.module.wms.service.deliverPlan.DeliverPlanDetailService;
import com.win.module.wms.service.deliverPlan.DeliverPlanMainService;
import com.win.module.wms.service.expectout.ExpectoutService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.jobsetting.JobsettingService;

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/expectout/ExpectoutService.java

@ -80,7 +80,7 @@ public interface ExpectoutService {
* @param locationcode 库位code
* @return
*/
public List<ExpectoutDO> selectNumberNew(String itemcode, List<String> inventorystatus, String locationcode);
public List<ExpectoutDO> selectByNumberNew(String itemcode, List<String> inventorystatus, String locationcode);
/**
* TB2----BY_BATCH
* 跟据管理模式查询批次
@ -91,7 +91,7 @@ public interface ExpectoutService {
* @param locationcode 库位code
* @return
*/
public List<ExpectoutDO> selectBatchNew(String itemcode, String batch, List<String> inventorystatus, String locationcode);
public List<ExpectoutDO> selectByBatchNew(String itemcode, String batch, List<String> inventorystatus, String locationcode);
/**
* TB2----BY_PACKAGING
* 跟据管理模式查询包装号
@ -103,7 +103,7 @@ public interface ExpectoutService {
* @param locationcode 库位code
* @return
*/
public List<ExpectoutDO> selectPackingNew(String itemcode, String packingnumber, String batch, List<String> inventorystatus, String locationcode);
public List<ExpectoutDO> selectByPackingNew(String itemcode, String packingnumber, String batch, List<String> inventorystatus, String locationcode);
/**
* TB2----BY_UNIQUE_ID
* 跟据管理模式查询唯一码
@ -113,7 +113,7 @@ public interface ExpectoutService {
* @param locationcode 库位code
* @return
*/
public List<ExpectoutDO> selectUniqeIdNew(String packingnumber, String locationcode, List<String> inventorystatus);
public List<ExpectoutDO> selectByUniqeIdNew(String packingnumber, String locationcode, List<String> inventorystatus);
/**
* 获得预计入库存列表, 用于 Excel 导出

32
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/expectout/ExpectoutServiceImpl.java

@ -88,14 +88,14 @@ public class ExpectoutServiceImpl implements ExpectoutService {
//按数量查找 BY_BATCH
@Override
public List<ExpectoutDO> selectNumberNew(String itemcode, List<String> inventorystatus, String locationcode) {
public List<ExpectoutDO> selectByNumberNew(String itemcode, List<String> inventorystatus, String locationcode) {
QueryWrapper<ExpectoutDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("item_code", itemcode);
queryWrapper.eq("inventory_status", inventorystatus);
queryWrapper.eq("location_code", locationcode);
List<ExpectoutDO> expectoutDO = expectoutMapper.selectList(queryWrapper);
if (!expectoutDO.isEmpty()) {
return expectoutDO;
List<ExpectoutDO> expectoutDOList = expectoutMapper.selectList(queryWrapper);
if (!expectoutDOList.isEmpty()) {
return expectoutDOList;
} else {
return null;
}
@ -103,15 +103,15 @@ public class ExpectoutServiceImpl implements ExpectoutService {
//按批次查询 BY_BATCH
@Override
public List<ExpectoutDO> selectBatchNew(String itemcode, String batch, List<String> inventorystatus, String locationcode) {
public List<ExpectoutDO> selectByBatchNew(String itemcode, String batch, List<String> inventorystatus, String locationcode) {
QueryWrapper<ExpectoutDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("item_code", itemcode);
queryWrapper.eq("batch", batch);
queryWrapper.eq("inventory_status", inventorystatus);
queryWrapper.eq("location_code", locationcode);
List<ExpectoutDO> expectoutDO = expectoutMapper.selectList(queryWrapper);
if (!expectoutDO.isEmpty()) {
return expectoutDO;
List<ExpectoutDO> expectoutDOList = expectoutMapper.selectList(queryWrapper);
if (!expectoutDOList.isEmpty()) {
return expectoutDOList;
} else {
return null;
}
@ -119,16 +119,16 @@ public class ExpectoutServiceImpl implements ExpectoutService {
//按包裝 BY_PACKAGING
@Override
public List<ExpectoutDO> selectPackingNew(String itemcode, String packingnumber, String batch, List<String> inventorystatus, String locationcode) {
public List<ExpectoutDO> selectByPackingNew(String itemcode, String packingnumber, String batch, List<String> inventorystatus, String locationcode) {
QueryWrapper<ExpectoutDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("item_code", itemcode);
queryWrapper.eq("batch", batch);
queryWrapper.eq("packing_number", packingnumber);
queryWrapper.eq("inventory_status", inventorystatus);
queryWrapper.eq("location_code", locationcode);
List<ExpectoutDO> expectoutDO = expectoutMapper.selectList(queryWrapper);
if (!expectoutDO.isEmpty()) {
return expectoutDO;
List<ExpectoutDO> expectoutDOList = expectoutMapper.selectList(queryWrapper);
if (!expectoutDOList.isEmpty()) {
return expectoutDOList;
} else {
return null;
}
@ -136,14 +136,14 @@ public class ExpectoutServiceImpl implements ExpectoutService {
//按唯一码查询 BY_UNIQUE_ID
@Override
public List<ExpectoutDO> selectUniqeIdNew(String packingnumber, String locationcode, List<String> inventorystatus) {
public List<ExpectoutDO> selectByUniqeIdNew(String packingnumber, String locationcode, List<String> inventorystatus) {
QueryWrapper<ExpectoutDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("packing_number", packingnumber);
queryWrapper.eq("inventory_status", inventorystatus);
queryWrapper.eq("location_code", locationcode);
List<ExpectoutDO> expectoutDO = expectoutMapper.selectList(queryWrapper);
if (!expectoutDO.isEmpty()) {
return expectoutDO;
List<ExpectoutDO> expectoutDOList = expectoutMapper.selectList(queryWrapper);
if (!expectoutDOList.isEmpty()) {
return expectoutDOList;
} else {
return null;
}

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java

@ -260,32 +260,34 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ
if ("HoldToOk".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord");
} else if ("OkToHold".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord");
} else if ("HoldToScrap".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord");
} else if ("ScrapToHold".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord");
} else if ("OkToScrap".equals(inventorymoveRecordMainDO.getBusinessType())) {
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord");
}else {
number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("MoveRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord");
}
inventorymoveRecordMainDO.setNumber(number);
inventorymoveRecordMainDO.setBusinessType(businesstypeDO.getCode());
inventorymoveRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
inventorymoveRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType());
if(businesstypeDO != null){
inventorymoveRecordMainDO.setBusinessType(businesstypeDO.getCode());
inventorymoveRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
inventorymoveRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType());
}
inventorymoveRecordMainDO.setInterfaceType(recordsettingDO.getInterfaceType());
inventorymoveRecordMainMapper.insert(inventorymoveRecordMainDO);
List<InventorymoveJobDetailUpdateReqVO> inventorymoveJobDetailUpdateReqVOList = inventorymoveJobMainUpdateReqVO.getSubList();

78
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java

@ -81,41 +81,43 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa
// 插入
InventorymoveRecordMainDO mainDO = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO);
List<InventorymoveRecordDetailDO> subDOList = InventorymoveRecordMainConvert.INSTANCE.convertList03(createReqVO.getSubList());
if("HoldToOkRecord".equals(mainDO.getBusinessType())){
if("HoldToOk".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord");
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord");
} else if("OkToHoldRecord".equals(mainDO.getBusinessType())){
} else if("OkToHold".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord");
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord");
} else if("HoldToScrapRecord".equals(mainDO.getBusinessType())){
} else if("HoldToScrap".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord");
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord");
} else if("ScrapToHoldRecord".equals(mainDO.getBusinessType())){
} else if("ScrapToHold".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord");
recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord");
} else if("OkToScrapRecord".equals(mainDO.getBusinessType())){
} else if("OkToScrap".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord");
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord");
}else if("InventoryMoveRecord".equals(mainDO.getBusinessType())){
}else if("Move".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_RECORD.getCode());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord");
recordsettingDO = recordsettingService.selectRecordsettingExist("InventoryMoveRecord");
recordsettingDO = recordsettingService.selectRecordsettingExist("MoveRecord");
}
mainDO.setNumber(number);
mainDO.setBusinessType(businesstypeDO.getCode());
if(businesstypeDO != null){
mainDO.setBusinessType(businesstypeDO.getCode());
mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
mainDO.setInTransactionType(businesstypeDO.getInTransactionType());
mainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
mainDO.setInterfaceType(recordsettingDO.getInterfaceType());
mainDO.setCreator(createReqVO.getCreator());
mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
mainDO.setInTransactionType(businesstypeDO.getInTransactionType());
mainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
AdminUserRespDTO user = userApi.getUser(Long.valueOf(createReqVO.getCreator()));
mainDO.setDepartmentCode(user.getDeptId().toString());
mainDO.setExecuteTime(LocalDateTime.now());
@ -145,10 +147,12 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut);
//增加业务出类型
transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
if(businesstypeDO != null){
transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
}
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setInventoryStatus(detailDO.getFromInventoryStatus());
transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId()));
@ -159,24 +163,26 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO);
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOOut);
//判断businesstypeDO.getInTransactionType()是否为空,不为空时增加入库存事务
if(businesstypeDO.getInTransactionType() != null && !businesstypeDO.getInTransactionType().isEmpty()) {
//增加业务入类型
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction());
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode());
transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOIn.setBatch(detailDO.getToBatch());
transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber());
transactionCreateReqVOIn.setInventoryStatus(detailDO.getToInventoryStatus());
transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode());
transactionCreateReqVOIn.setWarehouseCode(mainDO.getToWarehouseCode());
transactionCreateReqVOIn.setAmount(BigDecimal.ZERO);
transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setId(null);
//待确定库存事务信息
transactionCreateReqVOList.add(transactionCreateReqVOIn);
if(businesstypeDO != null){
//判断businesstypeDO.getInTransactionType()是否为空,不为空时增加入库存事务
if(businesstypeDO.getInTransactionType() != null && !businesstypeDO.getInTransactionType().isEmpty()) {
//增加业务入类型
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction());
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode());
transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOIn.setBatch(detailDO.getToBatch());
transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber());
transactionCreateReqVOIn.setInventoryStatus(detailDO.getToInventoryStatus());
transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode());
transactionCreateReqVOIn.setWarehouseCode(mainDO.getToWarehouseCode());
transactionCreateReqVOIn.setAmount(BigDecimal.ZERO);
transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setId(null);
//待确定库存事务信息
transactionCreateReqVOList.add(transactionCreateReqVOIn);
}
}
}
inventorymoveRecordDetailMapper.insertBatch(subDOList);

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

@ -578,27 +578,27 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
if("HoldToOk".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord");
} else if("OkToHold".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord");
} else if("HoldToScrap".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord");
} else if("ScrapToHold".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord");
} else if("OkToScrap".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord");
}else {
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode());
recordsettingDO = recordsettingService.selectRecordsettingExist("MoveRecord");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord");
}
inventorymoveRecordMainCreateReqVO.setNumber(number);
inventorymoveRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
@ -638,27 +638,27 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
if("HoldToOk".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("HoldToOkJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkJob");
} else if("OkToHold".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("OkToHoldJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldJob");
} else if("HoldToScrap".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("HoldToScrapJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapJob");
} else if("ScrapToHold".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("ScrapToHoldJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldJob");
} else if("OkToScrap".equals(mainDO.getBusinessType())){
number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("OkToScrapJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapJob");
}else {
number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_JOB.getCode());
jobsettingDO = jobsettingService.selectJobsettingExist("MoveJob");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MoveRequest");
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveJob");
}
inventorymoveJobMainDO.setNumber(number);
inventorymoveJobMainDO.setRequestTime(mainDO.getRequestTime());
@ -681,9 +681,11 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest
inventorymoveJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
inventorymoveJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
inventorymoveJobMainDO.setBusinessType(businesstypeDO.getCode());
inventorymoveJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
inventorymoveJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
if(businesstypeDO != null){
inventorymoveJobMainDO.setBusinessType(businesstypeDO.getCode());
inventorymoveJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
inventorymoveJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
}
inventorymoveJobMainMapper.insert(inventorymoveJobMainDO);
List<ExpectoutCreateReqVO> expectpoutCreateReqVOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectpinCreateReqVOList = new ArrayList<>();

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packagemergemain/PackagemergeMainService.java

@ -21,7 +21,7 @@ public interface PackagemergeMainService {
* @param createReqVO 创建信息
* @return 编号
*/
Long createPackagemergeMain(@Valid PackagemergeMainCreateReqVO createReqVO);
String createPackagemergeMain(@Valid PackagemergeMainCreateReqVO createReqVO);
/**
* 更新合包记录主

189
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packagemergemain/PackagemergeMainServiceImpl.java

@ -1,10 +1,42 @@
package com.win.module.wms.service.packagemergemain;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.issueRecord.IssueRecordDetailConvert;
import com.win.module.wms.convert.packagemergemain.PackagemergeDetailConvert;
import com.win.module.wms.convert.purchasereturnRecord.PurchasereturnRecordDetailConvert;
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.location.LocationDO;
import com.win.module.wms.dal.dataobject.packageMassage.PackageDO;
import com.win.module.wms.dal.dataobject.packagemergemain.PackagemergeDetailDO;
import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordDetailDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.packageMassage.PackageMapper;
import com.win.module.wms.dal.mysql.packagemergemain.PackagemergeDetailMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import com.win.module.wms.controller.packagemergemain.vo.*;
import com.win.module.wms.dal.dataobject.packagemergemain.PackagemergeMainDO;
@ -14,6 +46,7 @@ import com.win.module.wms.convert.packagemergemain.PackagemergeMainConvert;
import com.win.module.wms.dal.mysql.packagemergemain.PackagemergeMainMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
@ -25,16 +58,164 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
public class PackagemergeMainServiceImpl implements PackagemergeMainService {
@Resource
private TransactionService transactionService;
@Resource
private PackagemergeDetailMapper packagemergeDetailMapper;
@Resource
private PackageMapper packageMapper;
@Resource
private PackagemergeMainMapper packagemergeMainMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private JobUtils jobUtils;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private AdminUserApi userApi;
@Resource
private RecordsettingService recordsettingService;
@Resource
private LocationService locationService;
@Resource
private ItembasicService itembasicService;
@Override
public Long createPackagemergeMain(PackagemergeMainCreateReqVO createReqVO) {
@Transactional
public String createPackagemergeMain(PackagemergeMainCreateReqVO createReqVO) {
// 插入
PackagemergeMainDO packagemergeMain = PackagemergeMainConvert.INSTANCE.convert(createReqVO);
packagemergeMainMapper.insert(packagemergeMain);
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
PackagemergeMainDO mainDO = PackagemergeMainConvert.INSTANCE.convert(createReqVO);
List<PackagemergeDetailDO> subDOList = PackagemergeDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
String number = serialNumberApi.generateCode(RuleCodeEnum.MERGE_PACKAGE_RECORD.getCode());
mainDO.setNumber(number);
mainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId()));
mainDO.setExecuteTime(LocalDateTime.now());
mainDO.setActiveDate(LocalDateTime.now());
mainDO.setAvailable("TRUE");
mainDO.setId(null);
// 业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("MergePackageRecord");
mainDO.setBusinessType(businesstypeDO.getCode());
mainDO.setInTransactionType(businesstypeDO.getInTransactionType());
mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
// 接口类型
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("MergePackageRecord");
mainDO.setInterfaceType(recordsettingDO.getInterfaceType());
packagemergeMainMapper.insert(mainDO);
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
// 合并数量总和
BigDecimal sumQty = BigDecimal.ZERO;
for (PackagemergeDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
LocationDO locationDOFrom = locationService.selectLocation(detailDO.getLocationCode());
if(locationDOFrom != null) {
detailDO.setAreaCode(locationDOFrom.getAreaCode());
detailDO.setLocationGroupCode(locationDOFrom.getLocationGroupCode());
} else {
throw exception(LOCATION_NOT_EXISTS);
}
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode());
if (itembasicDO != null) {
detailDO.setItemName(itembasicDO.getName());
detailDO.setItemDesc1(itembasicDO.getDesc1());
detailDO.setItemDesc2(itembasicDO.getDesc2());
detailDO.setProjectCode(itembasicDO.getProject());
detailDO.setUom(itembasicDO.getUom());
} else {
throw exception(ITEMBASIC_NOT_EXISTS);
}
//查询库存余额
List<String> inventoryStatusList = new ArrayList<>();
inventoryStatusList.add(detailDO.getFromInventoryStatus());
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracyToBalance(detailDO.getItemCode(),detailDO.getFromPackingNumber(),detailDO.getFromBatch(),detailDO.getLocationCode(), inventoryStatusList);
if (balanceDO == null || balanceDO.size() == 0) {
throw exception(BALANCE_NOT_EXISTS);
}
// 库存事务——出
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut);
transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setInventoryStatus(detailDO.getFromInventoryStatus());
transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOOut.setBatch(detailDO.getFromBatch());
transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber());
transactionCreateReqVOOut.setLocationCode(detailDO.getLocationCode());
transactionCreateReqVOOut.setSinglePrice(balanceDO.get(0).getSinglePrice());
transactionCreateReqVOOut.setAmount(balanceDO.get(0).getAmount());
transactionCreateReqVOOut.setArriveDate(balanceDO.get(0).getArriveDate());
transactionCreateReqVOOut.setProduceDate(balanceDO.get(0).getProduceDate());
transactionCreateReqVOOut.setExpireDate(balanceDO.get(0).getExpireDate());
transactionCreateReqVOOut.setWarehouseCode(mainDO.getWarehouseCode());
transactionCreateReqVOOut.setQty(detailDO.getFromQty());
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOOut);
// 更新包装信息——来源包装
updatePackageDO(detailDO.getFromPackingNumber(),balanceDO.get(0).getQty().subtract(detailDO.getFromQty()));
sumQty = sumQty.add(detailDO.getFromQty());
}
//查询库存余额
List<String> inventoryStatusList = new ArrayList<>();
inventoryStatusList.add(subDOList.get(0).getToInventoryStatus());
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracyToBalance(subDOList.get(0).getItemCode(),subDOList.get(0).getToPackingNumber(),subDOList.get(0).getToBatch(),subDOList.get(0).getLocationCode(), inventoryStatusList);
// if (balanceDO == null || balanceDO.size() == 0) {
// throw exception(BALANCE_NOT_EXISTS);
// }
// 库存事务——入
TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO();
BeanUtils.copyProperties(subDOList.get(0), transactionCreateReqVOIn);
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction());
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode());
transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOIn.setBatch(subDOList.get(0).getToBatch());
transactionCreateReqVOIn.setPackingNumber(subDOList.get(0).getToPackingNumber());
transactionCreateReqVOIn.setInventoryStatus(subDOList.get(0).getToInventoryStatus());
transactionCreateReqVOIn.setLocationCode(subDOList.get(0).getLocationCode());
transactionCreateReqVOIn.setSinglePrice(balanceDO==null?BigDecimal.ZERO:balanceDO.get(0).getSinglePrice());
transactionCreateReqVOIn.setAmount(balanceDO==null?BigDecimal.ZERO:balanceDO.get(0).getAmount());
transactionCreateReqVOIn.setArriveDate(balanceDO==null?LocalDateTime.now():balanceDO.get(0).getArriveDate());
transactionCreateReqVOIn.setProduceDate(balanceDO==null?LocalDateTime.now():balanceDO.get(0).getProduceDate());
transactionCreateReqVOIn.setExpireDate(balanceDO==null?LocalDateTime.now():balanceDO.get(0).getExpireDate());
transactionCreateReqVOIn.setWarehouseCode(mainDO.getWarehouseCode());
transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setQty(sumQty);
transactionCreateReqVOIn.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOIn);
// 更新包装信息——目标包装
updatePackageDO(subDOList.get(0).getToPackingNumber(),balanceDO==null?sumQty:balanceDO.get(0).getQty().add(sumQty));
packagemergeDetailMapper.insertBatch(subDOList);
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "packagemergeMain", "增加了合包记录", TrendsTypeEnum.CREATE);
// 返回
return packagemergeMain.getId();
return mainDO.getNumber();
}
/**
* 更新包装信息
* @param number
* @param qty
*/
private void updatePackageDO(String number, BigDecimal qty) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("number", number);
PackageDO packageDO = packageMapper.selectOne(queryWrapper);
if (packageDO == null) {
throw exception(PACKAGE_NOT_EXISTS);
}
packageDO.setQty(qty);
packageMapper.updateById(packageDO);
}
@Override

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageovermain/PackageoverMainService.java

@ -21,7 +21,7 @@ public interface PackageoverMainService {
* @param createReqVO 创建信息
* @return 编号
*/
Long createPackageoverMain(@Valid PackageoverMainCreateReqVO createReqVO);
String createPackageoverMain(@Valid PackageoverMainCreateReqVO createReqVO);
/**
* 更新翻包记录主

247
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageovermain/PackageoverMainServiceImpl.java

@ -1,10 +1,48 @@
package com.win.module.wms.service.packageovermain;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.packageMassage.vo.PackageCreateReqVO;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.packageMassage.PackageConvert;
import com.win.module.wms.convert.packagemergemain.PackagemergeDetailConvert;
import com.win.module.wms.convert.packageovermain.PackageoverDetailConvert;
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.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.packageMassage.PackageDO;
import com.win.module.wms.dal.dataobject.packagemergemain.PackagemergeDetailDO;
import com.win.module.wms.dal.dataobject.packageovermain.PackageoverDetailDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.packageMassage.PackageMapper;
import com.win.module.wms.dal.mysql.packagemergemain.PackagemergeDetailMapper;
import com.win.module.wms.dal.mysql.packagemergemain.PackagemergeMainMapper;
import com.win.module.wms.dal.mysql.packageovermain.PackageoverDetailMapper;
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.packageMassage.PackageService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import com.win.module.wms.controller.packageovermain.vo.*;
import com.win.module.wms.dal.dataobject.packageovermain.PackageoverMainDO;
@ -14,6 +52,7 @@ import com.win.module.wms.convert.packageovermain.PackageoverMainConvert;
import com.win.module.wms.dal.mysql.packageovermain.PackageoverMainMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
@ -25,16 +64,216 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
public class PackageoverMainServiceImpl implements PackageoverMainService {
@Resource
private PackageService packageService;
@Resource
private ItempackagingService itempackagingService;
@Resource
private TransactionService transactionService;
@Resource
private PackagemergeDetailMapper packagemergeDetailMapper;
@Resource
private PackageMapper packageMapper;
@Resource
private PackagemergeMainMapper packagemergeMainMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private JobUtils jobUtils;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private AdminUserApi userApi;
@Resource
private RecordsettingService recordsettingService;
@Resource
private LocationService locationService;
@Resource
private ItembasicService itembasicService;
@Resource
private PackageoverMainMapper packageoverMainMapper;
@Resource
private PackageoverDetailMapper packageoverDetailMapper;
@Override
public Long createPackageoverMain(PackageoverMainCreateReqVO createReqVO) {
@Transactional
public String createPackageoverMain(PackageoverMainCreateReqVO createReqVO) {
// 插入
PackageoverMainDO packageoverMain = PackageoverMainConvert.INSTANCE.convert(createReqVO);
packageoverMainMapper.insert(packageoverMain);
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
PackageoverMainDO mainDO = PackageoverMainConvert.INSTANCE.convert(createReqVO);
List<PackageoverDetailDO> subDOList = PackageoverDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
String number = serialNumberApi.generateCode(RuleCodeEnum.OVER_PACKAGE_RECORD.getCode());
mainDO.setNumber(number);
mainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId()));
mainDO.setExecuteTime(LocalDateTime.now());
mainDO.setActiveDate(LocalDateTime.now());
mainDO.setAvailable("TRUE");
mainDO.setId(null);
// 业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OverPackageRecord");
mainDO.setBusinessType(businesstypeDO.getCode());
mainDO.setInTransactionType(businesstypeDO.getInTransactionType());
mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
// 接口类型
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("OverPackageRecord");
mainDO.setInterfaceType(recordsettingDO.getInterfaceType());
packageoverMainMapper.insert(mainDO);
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
for (PackageoverDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
LocationDO locationDOFrom = locationService.selectLocation(detailDO.getLocationCode());
if(locationDOFrom != null) {
detailDO.setAreaCode(locationDOFrom.getAreaCode());
detailDO.setLocationGroupCode(locationDOFrom.getLocationGroupCode());
} else {
throw exception(LOCATION_NOT_EXISTS);
}
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode());
if (itembasicDO != null) {
detailDO.setItemName(itembasicDO.getName());
detailDO.setItemDesc1(itembasicDO.getDesc1());
detailDO.setItemDesc2(itembasicDO.getDesc2());
detailDO.setProjectCode(itembasicDO.getProject());
detailDO.setUom(itembasicDO.getUom());
} else {
throw exception(ITEMBASIC_NOT_EXISTS);
}
//查询库存余额
List<String> inventoryStatusList = new ArrayList<>();
inventoryStatusList.add(detailDO.getFromInventoryStatus());
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracyToBalance(detailDO.getItemCode(),detailDO.getFromPackingNumber(),detailDO.getFromBatch(),detailDO.getLocationCode(), inventoryStatusList);
if (balanceDO == null || balanceDO.size() == 0) {
throw exception(BALANCE_NOT_EXISTS);
}
// 库存事务——出
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut);
transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setInventoryStatus(detailDO.getFromInventoryStatus());
transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOOut.setBatch(detailDO.getFromBatch());
transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber());
transactionCreateReqVOOut.setLocationCode(detailDO.getLocationCode());
transactionCreateReqVOOut.setSinglePrice(balanceDO.get(0).getSinglePrice());
transactionCreateReqVOOut.setAmount(balanceDO.get(0).getAmount());
transactionCreateReqVOOut.setArriveDate(balanceDO.get(0).getArriveDate());
transactionCreateReqVOOut.setProduceDate(balanceDO.get(0).getProduceDate());
transactionCreateReqVOOut.setExpireDate(balanceDO.get(0).getExpireDate());
transactionCreateReqVOOut.setWarehouseCode(mainDO.getWarehouseCode());
transactionCreateReqVOOut.setQty(detailDO.getFromQty());
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOOut);
// 更新包装信息——来源包装
updatePackageDO(detailDO.getFromPackingNumber(),detailDO.getFromQty());
// 查询一翻几的规则 在基础包装中 翻几 = 标包数量/替代标包数量 库存余额中不够分配的 向上取整
// 例如:库存余额24 翻3包 每包10 那么第一包数量10 第二包数量10 第三包数量4
// 例如:库存余额5 翻3包 每包10 那么第一包数量5
// 查询基础包装信息
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDO.getItemCode());
if (itempackagingDO == null) {
throw exception(ITEMPACKAGING_NOT_EXISTS);
}
List<PackageoverDetailDO> packageoverDetailDOList = new ArrayList<>();
// 判断替代标包数量不为空 并且 大于 0 并且 标包数大于等于替代标包数
if (itempackagingDO.getAltPackQty1() != null && itempackagingDO.getAltPackQty1().compareTo(BigDecimal.ZERO) == 1 && itempackagingDO.getStdPackQty().compareTo(itempackagingDO.getAltPackQty1()) != -1 ) {
// 翻几包 overCount = 标包数量/替代标包数量
BigDecimal overCount = itempackagingDO.getStdPackQty().divide(itempackagingDO.getAltPackQty1(),0, BigDecimal.ROUND_UP);
// 替代标包数量
BigDecimal altPackQty = itempackagingDO.getAltPackQty1();
// 库存余额数量
BigDecimal balanceQty = balanceDO.get(0).getQty();
for (int i =0; i< overCount.intValue();i++) {
// 创建 子表数据
PackageoverDetailDO packageoverDetailDO = new PackageoverDetailDO();
BeanUtils.copyProperties(detailDO,packageoverDetailDO);
packageoverDetailDO.setId(null).setCreator(null).setCreateTime(null).setUpdater(null).setUpdateTime(null);
packageoverDetailDO.setMasterId(mainDO.getId());
packageoverDetailDO.setToBatch(packageoverDetailDO.getFromBatch());
packageoverDetailDO.setToContainerNumber(packageoverDetailDO.getFromContainerNumber());
packageoverDetailDO.setToOwnerCode(packageoverDetailDO.getFromOwnerCode());
packageoverDetailDO.setToInventoryStatus(packageoverDetailDO.getFromInventoryStatus());
// 创建 包装及标签
PackageCreateReqVO packagecreateReqVO = PackageConvert.INSTANCE.convert01(packageService.LabelExist(detailDO.getFromPackingNumber()));
packagecreateReqVO.setId(null);
packagecreateReqVO.setCreator(null);
PackageDO packageDO;
// 替代标包数量 >= 库存余额数量 只能创建一个包装标签 结束循环
if (itempackagingDO.getAltPackQty1().compareTo(balanceQty) != -1) {
packagecreateReqVO.setQty(balanceQty);
packageDO = packageService.createPackageLabel(packagecreateReqVO);
packageoverDetailDO.setToPackingNumber(packageDO.getNumber());
packageoverDetailDO.setToQty(balanceQty);
break;
} else {
//库存余额数量 < 替代标包数量
packagecreateReqVO.setQty(altPackQty);
packageDO = packageService.createPackageLabel(packagecreateReqVO);
packageoverDetailDO.setToPackingNumber(packageDO.getNumber());
packageoverDetailDO.setToQty(altPackQty);
balanceQty = balanceQty.subtract(altPackQty);
}
packageoverDetailDOList.add(packageoverDetailDO);
// 库存事务——入
TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO();
BeanUtils.copyProperties(packageoverDetailDO, transactionCreateReqVOIn);
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction());
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode());
transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOIn.setBatch(packageoverDetailDO.getToBatch());
transactionCreateReqVOIn.setPackingNumber(packageoverDetailDO.getToPackingNumber());
transactionCreateReqVOIn.setInventoryStatus(packageoverDetailDO.getToInventoryStatus());
transactionCreateReqVOIn.setLocationCode(packageoverDetailDO.getLocationCode());
transactionCreateReqVOIn.setSinglePrice(BigDecimal.ZERO);
transactionCreateReqVOIn.setAmount(BigDecimal.ZERO);
transactionCreateReqVOIn.setArriveDate(LocalDateTime.now());
transactionCreateReqVOIn.setProduceDate(LocalDateTime.now());
transactionCreateReqVOIn.setExpireDate(LocalDateTime.now());
transactionCreateReqVOIn.setWarehouseCode(mainDO.getWarehouseCode());
transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setQty(packageoverDetailDO.getToQty());
transactionCreateReqVOIn.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOIn);
}
// 更新旧包装信息
updatePackageDO(detailDO.getFromPackingNumber(),BigDecimal.ZERO);
} else {
throw exception(PACKAGEOVER_DETAIL_PACKING_ERROR);
}
if (packageoverDetailDOList != null && packageoverDetailDOList.size() > 0) {
packageoverDetailMapper.insertBatch(packageoverDetailDOList);
}
}
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "packageoverMain", "增加了翻包记录", TrendsTypeEnum.CREATE);
// 返回
return packageoverMain.getId();
return mainDO.getNumber();
}
/**
* 更新包装信息
* @param number
* @param qty
*/
private void updatePackageDO(String number, BigDecimal qty) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("number", number);
PackageDO packageDO = packageMapper.selectOne(queryWrapper);
if (packageDO == null) {
throw exception(PACKAGE_NOT_EXISTS);
}
packageDO.setQty(qty);
packageMapper.updateById(packageDO);
}
@Override

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packagesplitmain/PackagesplitMainService.java

@ -21,7 +21,7 @@ public interface PackagesplitMainService {
* @param createReqVO 创建信息
* @return 编号
*/
Long createPackagesplitMain(@Valid PackagesplitMainCreateReqVO createReqVO);
String createPackagesplitMain(@Valid PackagesplitMainCreateReqVO createReqVO);
/**
* 更新拆包记录主

193
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packagesplitmain/PackagesplitMainServiceImpl.java

@ -1,11 +1,44 @@
package com.win.module.wms.service.packagesplitmain;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.packagemergemain.PackagemergeDetailConvert;
import com.win.module.wms.convert.packagesplitmain.PackagesplitDetailConvert;
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.location.LocationDO;
import com.win.module.wms.dal.dataobject.packageMassage.PackageDO;
import com.win.module.wms.dal.dataobject.packagemergemain.PackagemergeDetailDO;
import com.win.module.wms.dal.dataobject.packagesplitmain.PackagesplitDetailDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.packageMassage.PackageMapper;
import com.win.module.wms.dal.mysql.packagemergemain.PackagemergeDetailMapper;
import com.win.module.wms.dal.mysql.packagemergemain.PackagemergeMainMapper;
import com.win.module.wms.dal.mysql.packagesplitmain.PackagesplitDetailMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import com.win.module.wms.controller.packagesplitmain.vo.*;
import com.win.module.wms.dal.dataobject.packagesplitmain.PackagesplitMainDO;
@ -15,6 +48,7 @@ import com.win.module.wms.convert.packagesplitmain.PackagesplitMainConvert;
import com.win.module.wms.dal.mysql.packagesplitmain.PackagesplitMainMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
@ -25,17 +59,166 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Service
@Validated
public class PackagesplitMainServiceImpl implements PackagesplitMainService {
@Resource
private TransactionService transactionService;
@Resource
private PackagemergeDetailMapper packagemergeDetailMapper;
@Resource
private PackageMapper packageMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private JobUtils jobUtils;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private AdminUserApi userApi;
@Resource
private RecordsettingService recordsettingService;
@Resource
private LocationService locationService;
@Resource
private ItembasicService itembasicService;
@Resource
private PackagesplitMainMapper packagesplitMainMapper;
@Resource
private PackagesplitDetailMapper packagesplitDetailMapper;
@Override
public Long createPackagesplitMain(PackagesplitMainCreateReqVO createReqVO) {
@Transactional
public String createPackagesplitMain(PackagesplitMainCreateReqVO createReqVO) {
// 插入
PackagesplitMainDO packagesplitMain = PackagesplitMainConvert.INSTANCE.convert(createReqVO);
packagesplitMainMapper.insert(packagesplitMain);
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
PackagesplitMainDO mainDO = PackagesplitMainConvert.INSTANCE.convert(createReqVO);
List<PackagesplitDetailDO> subDOList = PackagesplitDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
String number = serialNumberApi.generateCode(RuleCodeEnum.SPLIT_PACKAGE_RECORD.getCode());
mainDO.setNumber(number);
mainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId()));
mainDO.setExecuteTime(LocalDateTime.now());
mainDO.setActiveDate(LocalDateTime.now());
mainDO.setAvailable("TRUE");
mainDO.setId(null);
// 业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SplitPackageRecord");
mainDO.setBusinessType(businesstypeDO.getCode());
mainDO.setInTransactionType(businesstypeDO.getInTransactionType());
mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
// 接口类型
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("SplitPackageRecord");
mainDO.setInterfaceType(recordsettingDO.getInterfaceType());
packagesplitMainMapper.insert(mainDO);
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
// 合并数量总和
BigDecimal sumQty = BigDecimal.ZERO;
for (PackagesplitDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
LocationDO locationDOFrom = locationService.selectLocation(detailDO.getLocationCode());
if(locationDOFrom != null) {
detailDO.setAreaCode(locationDOFrom.getAreaCode());
detailDO.setLocationGroupCode(locationDOFrom.getLocationGroupCode());
} else {
throw exception(LOCATION_NOT_EXISTS);
}
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode());
if (itembasicDO != null) {
detailDO.setItemName(itembasicDO.getName());
detailDO.setItemDesc1(itembasicDO.getDesc1());
detailDO.setItemDesc2(itembasicDO.getDesc2());
detailDO.setProjectCode(itembasicDO.getProject());
detailDO.setUom(itembasicDO.getUom());
} else {
throw exception(ITEMBASIC_NOT_EXISTS);
}
//查询库存余额
// List<String> inventoryStatusList = new ArrayList<>();
// inventoryStatusList.add(detailDO.getToInventoryStatus());
// List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracyToBalance(detailDO.getItemCode(),detailDO.getToPackingNumber(),detailDO.getToBatch(),detailDO.getLocationCode(),inventoryStatusList);
// if (balanceDO == null || balanceDO.size() == 0) {
// throw exception(BALANCE_NOT_EXISTS);
// }
// 库存事务——入
TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO();
BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn);
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction());
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode());
transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOIn.setBatch(detailDO.getToBatch());
transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber());
transactionCreateReqVOIn.setInventoryStatus(detailDO.getToInventoryStatus());
transactionCreateReqVOIn.setLocationCode(detailDO.getLocationCode());
transactionCreateReqVOIn.setSinglePrice(BigDecimal.ZERO);
transactionCreateReqVOIn.setAmount(BigDecimal.ZERO);
transactionCreateReqVOIn.setArriveDate(LocalDateTime.now());
transactionCreateReqVOIn.setProduceDate(LocalDateTime.now());
transactionCreateReqVOIn.setExpireDate(LocalDateTime.now());
transactionCreateReqVOIn.setWarehouseCode(mainDO.getWarehouseCode());
transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setQty(detailDO.getToQty());
transactionCreateReqVOIn.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOIn);
// 更新包装信息
updatePackageDO(detailDO.getToPackingNumber(),detailDO.getToQty());
sumQty = sumQty.add(detailDO.getFromQty());
}
//查询库存余额
List<String> inventoryStatusList = new ArrayList<>();
inventoryStatusList.add(subDOList.get(0).getToInventoryStatus());
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracyToBalance(subDOList.get(0).getItemCode(),subDOList.get(0).getToPackingNumber(),subDOList.get(0).getToBatch(),subDOList.get(0).getLocationCode(), inventoryStatusList);
if (balanceDO == null || balanceDO.size() == 0) {
throw exception(BALANCE_NOT_EXISTS);
}
// 库存事务——出
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(subDOList.get(0), transactionCreateReqVOOut);
transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType());
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction());
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode());
transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setInventoryStatus(subDOList.get(0).getFromInventoryStatus());
transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId()));
transactionCreateReqVOOut.setBatch(subDOList.get(0).getFromBatch());
transactionCreateReqVOOut.setPackingNumber(subDOList.get(0).getFromPackingNumber());
transactionCreateReqVOOut.setLocationCode(subDOList.get(0).getLocationCode());
transactionCreateReqVOOut.setSinglePrice(balanceDO.get(0).getSinglePrice().compareTo(BigDecimal.ZERO) == 1?balanceDO.get(0).getSinglePrice():BigDecimal.ZERO);
transactionCreateReqVOOut.setAmount(balanceDO.get(0).getAmount().compareTo(BigDecimal.ZERO) == 1?balanceDO.get(0).getAmount():BigDecimal.ZERO);
transactionCreateReqVOOut.setArriveDate(balanceDO.get(0).getArriveDate());
transactionCreateReqVOOut.setProduceDate(balanceDO.get(0).getProduceDate());
transactionCreateReqVOOut.setExpireDate(balanceDO.get(0).getExpireDate());
transactionCreateReqVOOut.setWarehouseCode(mainDO.getWarehouseCode());
transactionCreateReqVOOut.setQty(subDOList.get(0).getFromQty());
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOOut);
// 更新包装信息——来源包装 库存余额数量-从包装数量
updatePackageDO(subDOList.get(0).getFromPackingNumber(),balanceDO.get(0).getQty().subtract(sumQty));
packagesplitDetailMapper.insertBatch(subDOList);
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "packagesplitMain", "增加了拆包记录", TrendsTypeEnum.CREATE);
// 返回
return packagesplitMain.getId();
return mainDO.getNumber();
}
/**
* 更新包装信息
* @param number
* @param qty
*/
private void updatePackageDO(String number, BigDecimal qty) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("number", number);
PackageDO packageDO = packageMapper.selectOne(queryWrapper);
if (packageDO == null) {
throw exception(PACKAGE_NOT_EXISTS);
}
packageDO.setQty(qty);
packageMapper.updateById(packageDO);
}
@Override

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java

@ -236,7 +236,7 @@ public class ProductdismantleRequestMainServiceImpl implements ProductdismantleR
private void validateDetailMethod(ProductdismantleRequestMainDO mainDO, ProductdismantleRequestDetailaCreateReqVO detailDo, BusinesstypeDO businesstypeDO) {
// 校验--生产线基本信息
ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode());
detailDo.setFromLocationCode(productionlineDO.getRawLocationCode());
// detailDo.setFromLocationCode(productionlineDO.getRawLocationCode());
// 校验--物品基本信息
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
// 赋值物品Item相关信息

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java

@ -155,7 +155,7 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
//查询库存余额
List<String> status = new ArrayList<>();
status.add(detailDO.getInventoryStatus());
List<BalanceDO> balanceDOList = balanceService.selectNumber(detailDO.getItemCode(),status,detailDO.getFromLocationCode());
List<BalanceDO> balanceDOList = balanceService.selectByNumber(detailDO.getItemCode(),status,detailDO.getFromLocationCode());
if (balanceDOList == null || balanceDOList.isEmpty()) {
throw exception(BALANCE_NOT_EXISTS);
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java

@ -463,9 +463,9 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe
backflushRecordDetailbDO.setFromLocationCode(workstationDO.getRawLocationCode());
// 根据 from_location_code 查询库存余额
// TODO: 如果按批次 查询批次获取库存余额 排序批次 如果第一条批次不够数量 需要扣除第二条余额 库存事务出的动作要存2条
List inventoryStatus = new ArrayList();
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add("OK");
List<BalanceDO> balanceDOList = balanceService.selectNumber(backflushRequestDetailbDO.getItemCode(),inventoryStatus,workstationDO.getRawLocationCode());
List<BalanceDO> balanceDOList = balanceService.selectByNumber(backflushRequestDetailbDO.getItemCode(),inventoryStatus,workstationDO.getRawLocationCode());
backflushRecordDetailbDO.setPackingNumber(balanceDOList.get(0).getPackingNumber());
backflushRecordDetailbDO.setBatch(balanceDOList.get(0).getBatch());
backflushRecordDetailbDO.setInventoryStatus("OK");

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java

@ -31,6 +31,7 @@ import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnReco
import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.supplier.SupplierDO;
import com.win.module.wms.dal.mysql.purchasereceiptRecord.PurchasereceiptRecordMainMapper;
import com.win.module.wms.dal.mysql.purchasereturnJob.PurchasereturnJobDetailMapper;
import com.win.module.wms.dal.mysql.purchasereturnJob.PurchasereturnJobMainMapper;
@ -38,6 +39,7 @@ import com.win.module.wms.dal.mysql.purchasereturnRecord.PurchasereturnRecordDet
import com.win.module.wms.dal.mysql.purchasereturnRecord.PurchasereturnRecordMainMapper;
import com.win.module.wms.dal.mysql.purchasereturnRequest.PurchasereturnRequestDetailMapper;
import com.win.module.wms.dal.mysql.purchasereturnRequest.PurchasereturnRequestMainMapper;
import com.win.module.wms.dal.mysql.supplier.SupplierMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum;
@ -113,6 +115,8 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
private TrendsApi trendsApi;
@Resource
private JobsettingService jobsettingService;
@Resource
private SupplierMapper supplierMapper;
@Override
@Transactional
@ -405,13 +409,11 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
List<PurchasereturnJobDetailDO> purchasereturnJobDetailDOList = new ArrayList<>();
for (PurchasereturnRequestDetailDO purchasereturnRequestDetailDO : detailDOList) {
PurchasereturnJobDetailDO purchasereturnJobDetailDO = PurchasereturnJobDetailConvert.INSTANCE.convert(purchasereturnRequestDetailDO);
purchasereturnJobDetailDO.setToLocationCode(purchasereturnRequestDetailDO.getToLocationCode());
purchasereturnJobDetailDO.setNumber(number);
purchasereturnJobDetailDO.setId(null).setCreator(null).setCreateTime(null).setUpdater(null).setUpdateTime(null);
purchasereturnJobDetailDO.setMasterId(purchasereturnJobMainDO.getId());
purchasereturnJobDetailDO.setFromLocationCode(purchasereturnRequestDetailDO.getFromLocationCode());
purchasereturnJobDetailDO.setToOwnerCode(purchasereturnRequestDetailDO.getToOwnerCode());
purchasereturnJobDetailDO.setToLocationCode(purchasereturnRequestDetailDO.getToLocationCode());
purchasereturnJobDetailDOList.add(purchasereturnJobDetailDO);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
@ -448,9 +450,9 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
private BigDecimal validatorBalance(PurchasereturnRequestDetailDO detailDO, PurchasereturnRequestMainDO mainDO, List<String> inventoryStatusList) {
BigDecimal bigDecimal = new BigDecimal(0);
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber(), detailDO.getBatch(), detailDO.getFromLocationCode(), inventoryStatusList);
if (balance != null) {
for (BalanceDO balanceDO : balance) {
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber(), detailDO.getBatch(), detailDO.getFromLocationCode(), inventoryStatusList);
if (balanceDOList != null) {
for (BalanceDO balanceDO : balanceDOList) {
bigDecimal = bigDecimal.add(balanceDO.getQty());
mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode());
//detailDO.setInventoryStatus(balanceDO.getInventoryStatus());
@ -461,6 +463,10 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
// 新增校验
private void validatorToCreate(PurchasereturnRequestMainDO mainDO, List<PurchasereturnRequestDetailDO> subDOList) {
SupplierDO supplierDO = supplierMapper.selectByCode(mainDO.getSupplierCode());
if(supplierDO == null) {
throw exception(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS);
}
requestsettingAndBusinesstypeSet(mainDO);
//子表校验
for (PurchasereturnRequestDetailDO purchasereturnRequestDetailDO : subDOList) {

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

@ -190,6 +190,15 @@ public class JobUtils {
return result;
}
public void demo(String pcode){
BusinesstypeDO businesstypeDO = selectDocumentSettingFromBusinessType(pcode);
String inLocationTypes = businesstypeDO.getInLocationTypes();
String[] split = inLocationTypes.split(",");
ArrayList<BalanceDO> balanceDOArrayList = new ArrayList<>();
for (String s : split) {
// balanceService.getBalancePage()
}
}
/**
* 更新发货计划的已发货数量
@ -507,17 +516,17 @@ public class JobUtils {
*/
public List<BalanceDO> selectlocationReturnManagementAccuracyToBalance(String itemcode, String packingnumber, String batch, String locationcode, List<String> inventoryStatus) {
RuleRespVO managementtRule = ruleService.management(null, null, itemcode, locationcode, null, null);
List<BalanceDO> balanceDO = null;
List<BalanceDO> balanceDOList = null;
if ("{\"ManagementPrecision\":\"BY_QUANTITY\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectNumber(itemcode, inventoryStatus, locationcode);
balanceDOList = balanceService.selectByNumber(itemcode, inventoryStatus, locationcode);
} else if ("{\"ManagementPrecision\":\"BY_BATCH\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectBatch(itemcode, batch, inventoryStatus, locationcode);
balanceDOList = balanceService.selectByBatch(itemcode, batch, inventoryStatus, locationcode);
} else if ("{\"ManagementPrecision\":\"BY_PACKAGING\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectPackaging(itemcode, packingnumber, batch, inventoryStatus, locationcode);
balanceDOList = balanceService.selectByPackaging(itemcode, packingnumber, batch, inventoryStatus, locationcode);
} else if ("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectUniqueId(packingnumber, locationcode, inventoryStatus);
balanceDOList = balanceService.selectByUniqueId(packingnumber, locationcode, inventoryStatus);
}
return balanceDO;
return balanceDOList;
}
/**
@ -535,37 +544,37 @@ public class JobUtils {
*/
public List<BalanceDO> selectlocationReturnManagementAccuracy(String itemcode, String packingnumber, String batch, String locationcode, List<String> inventoryStatus) {
RuleRespVO managementtRule = ruleService.management(null, null, itemcode, locationcode, null, null);
List<BalanceDO> balanceDO = null;
List<BalanceDO> balanceDOList = null;
if ("{\"ManagementPrecision\":\"BY_QUANTITY\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectNumber(itemcode, inventoryStatus, locationcode);
if (balanceDO == null) {
balanceDOList = balanceService.selectByNumber(itemcode, inventoryStatus, locationcode);
if (balanceDOList == null) {
throw exception(MANAGEMENTPRECISION_EXCEPTION, "物品代码" + itemcode + "库存状态" + inventoryStatus + "在" + locationcode + "库位中未查找到库存记录");
} else {
return balanceDO;
return balanceDOList;
}
} else if ("{\"ManagementPrecision\":\"BY_BATCH\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectBatch(itemcode, batch, inventoryStatus, locationcode);
if (balanceDO == null) {
balanceDOList = balanceService.selectByBatch(itemcode, batch, inventoryStatus, locationcode);
if (balanceDOList == null) {
throw exception(MANAGEMENTPRECISION_EXCEPTION, "物品代码" + itemcode + "批次" + batch + "库存状态" + inventoryStatus + "在" + locationcode + "库位中未查找到库存记录");
} else {
return balanceDO;
return balanceDOList;
}
} else if ("{\"ManagementPrecision\":\"BY_PACKAGING\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectPackaging(itemcode, packingnumber, batch, inventoryStatus, locationcode);
if (balanceDO == null) {
balanceDOList = balanceService.selectByPackaging(itemcode, packingnumber, batch, inventoryStatus, locationcode);
if (balanceDOList == null) {
throw exception(MANAGEMENTPRECISION_EXCEPTION, "物品代码" + itemcode + "箱码" + packingnumber + "批次" + batch + "库存状态" + inventoryStatus + "在" + locationcode + "库位中未查找到库存记录");
} else {
return balanceDO;
return balanceDOList;
}
} else if ("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectUniqueId(packingnumber, locationcode, inventoryStatus);
if (balanceDO == null) {
balanceDOList = balanceService.selectByUniqueId(packingnumber, locationcode, inventoryStatus);
if (balanceDOList == null) {
throw exception(MANAGEMENTPRECISION_EXCEPTION, "唯一码" + packingnumber + "库存状态" + inventoryStatus + "在" + locationcode + "库位中未查找到库存记录");
} else {
return balanceDO;
return balanceDOList;
}
}
return balanceDO;
return balanceDOList;
}
@ -585,18 +594,18 @@ public class JobUtils {
*/
public List<ExpectoutDO> selectLocatioNew(String itemcode, String packingnumber, String batch, String locationcode, List<String> inventoryStatus) {
RuleRespVO managementtRule = ruleService.management(null, null, itemcode, locationcode, null, null);
List<ExpectoutDO> expectoutDO = null;
List<ExpectoutDO> expectoutDOList = null;
if ("{\"ManagementPrecision\":\"BY_QUANTITY\"}".equals(managementtRule.getConfiguration())) {
expectoutDO = expectoutService.selectNumberNew(itemcode, inventoryStatus, locationcode);
expectoutDOList = expectoutService.selectByNumberNew(itemcode, inventoryStatus, locationcode);
} else if ("{\"ManagementPrecision\":\"BY_BATCH\"}".equals(managementtRule.getConfiguration())) {
expectoutDO = expectoutService.selectBatchNew(itemcode, batch, inventoryStatus, locationcode);
expectoutDOList = expectoutService.selectByBatchNew(itemcode, batch, inventoryStatus, locationcode);
} else if ("{\"ManagementPrecision\":\"BY_PACKAGING\"}".equals(managementtRule.getConfiguration())) {
expectoutDO = expectoutService.selectPackingNew(itemcode, packingnumber, batch, inventoryStatus, locationcode);
expectoutDOList = expectoutService.selectByPackingNew(itemcode, packingnumber, batch, inventoryStatus, locationcode);
} else if ("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(managementtRule.getConfiguration())) {
expectoutDO = expectoutService.selectUniqeIdNew(packingnumber, locationcode, inventoryStatus);
expectoutDOList = expectoutService.selectByUniqeIdNew(packingnumber, locationcode, inventoryStatus);
}
return expectoutDO;
return expectoutDOList;
}
/**
@ -655,10 +664,10 @@ public class JobUtils {
//库存不应该存在
public List<BalanceDO> warehouseStocknNotExist(String itemcode, String packingnumber, String locationcode, List<String> inventoryStatus) {
RuleRespVO managementtRule = ruleService.management(null, null, itemcode, locationcode, null, null);
List<BalanceDO> balanceDO = null;
List<BalanceDO> balanceDOList = null;
if ("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(managementtRule.getConfiguration())) {
balanceDO = balanceService.selectUniqueId(packingnumber, locationcode, inventoryStatus);
return balanceDO;
balanceDOList = balanceService.selectByUniqueId(packingnumber, locationcode, inventoryStatus);
return balanceDOList;
} else {
return null;
}
@ -695,13 +704,13 @@ public class JobUtils {
String[] splits = management.getConfiguration().split("\"");
for (String split : splits) {
if ("{\"ManagementPrecision\":\"BY_QUANTITY\"}".equals(management.getConfiguration())) {
expectoutService.selectNumberNew(pitemcode, pinventoryStatus, plocationcode);
expectoutService.selectByNumberNew(pitemcode, pinventoryStatus, plocationcode);
} else if ("{\"ManagementPrecision\":\"BY_BATCH\"}".equals(management.getConfiguration())) {
expectoutDO = expectoutService.selectBatchNew(pitemcode, pbatch, pinventoryStatus, plocationcode);
expectoutDO = expectoutService.selectByBatchNew(pitemcode, pbatch, pinventoryStatus, plocationcode);
} else if ("{\"ManagementPrecision\":\"BY_PACKAGING\"}".equals(management.getConfiguration())) {
expectoutDO = expectoutService.selectPackingNew(pitemcode, ppackingnumber, pbatch, pinventoryStatus, plocationcode);
expectoutDO = expectoutService.selectByPackingNew(pitemcode, ppackingnumber, pbatch, pinventoryStatus, plocationcode);
} else if ("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(management.getConfiguration())) {
expectoutDO = expectoutService.selectUniqeIdNew(ppackingnumber, plocationcode, pinventoryStatus);
expectoutDO = expectoutService.selectByUniqeIdNew(ppackingnumber, plocationcode, pinventoryStatus);
}
return expectoutDO;
}

Loading…
Cancel
Save