Browse Source

暂存

master
陈薪名 2 years ago
parent
commit
104e79afe6
  1. 41
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java
  2. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java
  3. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java
  4. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java
  5. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java
  6. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java
  7. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java
  8. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java

41
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java

@ -158,16 +158,16 @@ public class ProductionreturnRequestMainController {
// 手动创建导出 demo // 手动创建导出 demo
List<ProductionreturnRequestImportVO> list = new ArrayList<>(); List<ProductionreturnRequestImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>(); Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(7, uom);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(8, inventoryStatus); mapDropDown.put(8, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(10, uom);
// 输出 // 输出
ExcelUtils.write(response, "生产退料信息导入模板.xlsx", "生产退料申请信息列表", ProductionreturnRequestImportVO.class, list, mapDropDown); ExcelUtils.write(response, "生产退料导入模板.xlsx", "生产退料申请列表", ProductionreturnRequestImportVO.class, list, mapDropDown);
} }
@PostMapping("/import") @PostMapping("/import")
@Operation(summary = "导入生产退料基本信息") @Operation(summary = "导入合格生产退料")
@Parameters({ @Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@ -177,17 +177,40 @@ public class ProductionreturnRequestMainController {
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response, public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file, @RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode, @RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart, @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
@RequestParam(value = "businesstypeDO")BusinesstypeDO businesstypeDO, List<ProductionreturnRequestImportVO> list = ExcelUtils.read(file, ProductionreturnRequestImportVO.class);
@RequestParam(value = "requestsettingDO")RequestsettingDO requestsettingDO) throws Exception { ConvertUtil<ProductionreturnRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(ProductionreturnRequestMainCreateReqVO.class);
List<ProductionreturnRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<ProductionreturnRequestImportErrorVO> errorList = productionreturnRequestMainService.importProductionreturnRequestList(createReqVOList, mode, updatePart, true);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("生产退料导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
@PostMapping("/importNO")
@Operation(summary = "导入不合格生产退料")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:import')")
public CommonResult<Map<String, Object>> importExcelNO(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<ProductionreturnRequestImportVO> list = ExcelUtils.read(file, ProductionreturnRequestImportVO.class); List<ProductionreturnRequestImportVO> list = ExcelUtils.read(file, ProductionreturnRequestImportVO.class);
ConvertUtil<ProductionreturnRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(ProductionreturnRequestMainCreateReqVO.class); ConvertUtil<ProductionreturnRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(ProductionreturnRequestMainCreateReqVO.class);
List<ProductionreturnRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList(); List<ProductionreturnRequestMainCreateReqVO> createReqVOList = convertUtil.invoke(list).getDataList();
List<ProductionreturnRequestImportErrorVO> errorList = productionreturnRequestMainService.importProductionreturnRequestList(createReqVOList, mode, updatePart,businesstypeDO,requestsettingDO); List<ProductionreturnRequestImportErrorVO> errorList = productionreturnRequestMainService.importProductionreturnRequestList(createReqVOList, mode, updatePart, false);
Map<String, Object> returnMap = new HashMap<>(); Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size()); returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) { if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("生产退料基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); String url = ExcelUtils.writeLocalFile("生产退料导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url); returnMap.put("errorFile", url);
} }
return success(returnMap); return success(returnMap);

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java

@ -27,6 +27,9 @@ public class ProductionreturnRequestImportVO {
@ExcelProperty("车间代码") @ExcelProperty("车间代码")
private String workshopCode; private String workshopCode;
@ExcelProperty("截止时间")
private String dueTime;
@ExcelProperty("生产线代码") @ExcelProperty("生产线代码")
private String productionLineCode; private String productionLineCode;
@ -42,4 +45,5 @@ public class ProductionreturnRequestImportVO {
@ExcelProperty(value = "计量单位", converter = DictConvert.class) @ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM) @DictFormat(DictTypeConstants.UOM)
private String uom; private String uom;
} }

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

@ -358,7 +358,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
List<DeliverJobDetailDO> deliverJobDetailDOList = new ArrayList<>(); List<DeliverJobDetailDO> deliverJobDetailDOList = new ArrayList<>();
detailDOList.forEach(item -> { detailDOList.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO // 根据批次策略/下架策略 返回 库存余额DO
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),"OK",item.getProjectCode(),item.getQty()); List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),"OK",item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes());
// 根据 查询出所需数据 解析成 任务子表数据 // 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> { balanceDOListJob.forEach(balanceDOItem -> {
DeliverJobDetailDO deliverJobDetailDo = new DeliverJobDetailDO(); DeliverJobDetailDO deliverJobDetailDo = new DeliverJobDetailDO();

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java

@ -357,7 +357,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
} }
try { try {
ProductionlineDO productionlineDO = this.validatorProductionLineCode(detailDo.getProductionLineCode()); ProductionlineDO productionlineDO = this.validatorProductionLineCode(detailDo.getProductionLineCode());
detailDo.setToLocationCode(productionlineDO.getRawLocationCode()); // detailDo.setToLocationCode(productionlineDO.getRawLocationCode());
} catch (Exception ex) { } catch (Exception ex) {
message.append(ex.getMessage()).append(","); message.append(ex.getMessage()).append(",");
} }
@ -460,8 +460,10 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom()); this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom());
validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode()); validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode());
validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode()); validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode());
ProductionlineitemDO productionlineitemDO = this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode()); // 暂时不校验 生产线物品关系
issueRequestDetailDO.setToLocationCode(productionlineitemDO.getRawLocationCode()); // ProductionlineitemDO productionlineitemDO = this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode());
// issueRequestDetailDO.setToLocationCode(productionlineitemDO.getRawLocationCode());
// RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null); // RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null);
// if (grounding == null) { // if (grounding == null) {
// throw exception(555, "未查找到该条上架策略"); // throw exception(555, "未查找到该条上架策略");
@ -669,13 +671,14 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
issueJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); issueJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
issueJobMainMapper.insert(issueJobMainDO); issueJobMainMapper.insert(issueJobMainDO);
List<IssueJobDetailDO> issueJobDetailDOList = new ArrayList<>(); List<IssueJobDetailDO> issueJobDetailDOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>(); List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>(); List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
// 根据发料申请子表数据进行分析 // 根据发料申请子表数据进行分析
detailDO.forEach(item -> { detailDO.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO // 根据批次策略/下架策略 返回 库存余额DO
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty()); List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes());
// 根据 查询出所需数据 解析成 任务子表数据 // 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> { balanceDOListJob.forEach(balanceDOItem -> {
IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO(); IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO();
@ -710,16 +713,16 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
BeanUtils.copyProperties(issueJobDetailDO, expectinCreateReqVO); BeanUtils.copyProperties(issueJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number); expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType()); expectinCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(issueJobDetailDO.getFromLocationCode()); expectinCreateReqVO.setLocationCode(item.getToLocationCode());
expectinCreateReqVO.setOwnerCode(issueJobDetailDO.getFromOwnerCode()); expectinCreateReqVO.setOwnerCode(item.getToOwnerCode());
expectinCreateReqVOList.add(expectinCreateReqVO); expectinCreateReqVOList.add(expectinCreateReqVO);
//预计出 //预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(issueJobDetailDO, expectoutCreateReqVO); BeanUtils.copyProperties(issueJobDetailDO, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number); expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType()); expectoutCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(issueJobDetailDO.getFromLocationCode()); expectoutCreateReqVO.setLocationCode(balanceDOItem.getLocationCode());
expectoutCreateReqVO.setOwnerCode(issueJobDetailDO.getFromOwnerCode()); expectoutCreateReqVO.setOwnerCode(item.getFromOwnerCode());
expectoutCreateReqVOList.add(expectoutCreateReqVO); expectoutCreateReqVOList.add(expectoutCreateReqVO);
}); });
}); });

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java

@ -81,5 +81,5 @@ public interface ProductionreturnRequestMainService {
*/ */
PageResult<ProductionreturnRequestMainDO> getProductionreturnRequestMainSenior(CustomConditions conditions); PageResult<ProductionreturnRequestMainDO> getProductionreturnRequestMainSenior(CustomConditions conditions);
List<ProductionreturnRequestImportErrorVO> importProductionreturnRequestList(List<ProductionreturnRequestMainCreateReqVO> createReqVOList, Integer mode, Boolean updatePart, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO); List<ProductionreturnRequestImportErrorVO> importProductionreturnRequestList(List<ProductionreturnRequestMainCreateReqVO> createReqVOList, Integer mode, Boolean updatePart, Boolean isOK);
} }

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java

@ -158,20 +158,22 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
@Override @Override
public List<ProductionreturnRequestImportErrorVO> importProductionreturnRequestList(List<ProductionreturnRequestMainCreateReqVO> createReqVOList public List<ProductionreturnRequestImportErrorVO> importProductionreturnRequestList(List<ProductionreturnRequestMainCreateReqVO> createReqVOList
, Integer mode, Boolean updatePart,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { , Integer mode, Boolean updatePart, Boolean isOK) {
if (CollUtil.isEmpty(createReqVOList)) { if (CollUtil.isEmpty(createReqVOList)) {
throw exception(PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY); throw exception(PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY);
} }
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRequest");
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MaterialReturnRequest");
List<ProductionreturnRequestImportErrorVO> errorList = new ArrayList<>(); List<ProductionreturnRequestImportErrorVO> errorList = new ArrayList<>();
createReqVOList.forEach(createReqVO -> { createReqVOList.forEach(createReqVO -> {
ProductionreturnRequestMainDO mainDo = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO); ProductionreturnRequestMainDO mainDo = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validatorProductionreturnRequestMainImport(mainDo,businesstypeDO,requestsettingDO); String messageMain = validatorProductionreturnRequestMainImport(mainDo,businesstypeDO, requestsettingDO);
List<ProductionreturnRequestDetailCreateReqVO> subList = createReqVO.getSubList(); List<ProductionreturnRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<ProductionreturnRequestDetailDO> subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList); List<ProductionreturnRequestDetailDO> subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList);
// 是否有错误数据 // 是否有错误数据
boolean flag = true; boolean flag = true;
for (ProductionreturnRequestDetailDO detailDO : subDOList) { for (ProductionreturnRequestDetailDO detailDO : subDOList) {
String messageDetail = validatorProductionreturnRequestDetailImport(detailDO, mainDo,businesstypeDO); String messageDetail = validatorProductionreturnRequestDetailImport(detailDO, mainDo);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) { if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
ProductionreturnRequestImportErrorVO importErrorVO = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); ProductionreturnRequestImportErrorVO importErrorVO = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败"); importErrorVO.setImportStatus("失败");
@ -257,7 +259,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
* @param mainDo * @param mainDo
* @return * @return
*/ */
private String validatorProductionreturnRequestMainImport(ProductionreturnRequestMainDO mainDo,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { private String validatorProductionreturnRequestMainImport(ProductionreturnRequestMainDO mainDo,BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) {
StringBuilder message = new StringBuilder(); StringBuilder message = new StringBuilder();
try { try {
validatorWorkshop(mainDo.getWorkshopCode()); validatorWorkshop(mainDo.getWorkshopCode());
@ -265,7 +267,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
message.append(ex.getMessage()).append(","); message.append(ex.getMessage()).append(",");
} }
if (businesstypeDO == null) { if (businesstypeDO == null) {
message.append("根据业务类型设置未查找到采购退货申请的相关业务类型"); message.append("根据业务类型设置未查找到相关业务类型");
} }
else { else {
mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setBusinessType(businesstypeDO.getCode());
@ -275,7 +277,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
} }
if (requestsettingDO == null) { if (requestsettingDO == null) {
message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); message.append("根据申请单设置未查找相关业务类型");
} }
else { else {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
@ -297,7 +299,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
* @param detailDo * @param detailDo
* @return * @return
*/ */
private String validatorProductionreturnRequestDetailImport(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { private String validatorProductionreturnRequestDetailImport(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo) {
StringBuilder message = new StringBuilder(); StringBuilder message = new StringBuilder();
try { try {
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode());

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

@ -540,7 +540,7 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ
// 根据发料申请子表数据进行分析 // 根据发料申请子表数据进行分析
detailDO.forEach(item -> { detailDO.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO // 根据批次策略/下架策略 返回 库存余额DO
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty()); List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes());
// 根据 查询出所需数据 解析成 任务子表数据 // 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> { balanceDOListJob.forEach(balanceDOItem -> {
RepleinshJobDetailDO repleinshJobDetailDO = new RepleinshJobDetailDO(); RepleinshJobDetailDO repleinshJobDetailDO = new RepleinshJobDetailDO();

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

@ -1,5 +1,6 @@
package com.win.module.wms.util; package com.win.module.wms.util;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -733,9 +734,10 @@ public class JobUtils {
* @param inventoryStatus * @param inventoryStatus
* @param projectCode * @param projectCode
* @param qty * @param qty
* @param locationTypes
* @return * @return
*/ */
public List<BalanceDO> getBalanceByBatchOffShelf(String itemCode, String inventoryStatus, String projectCode, BigDecimal qty) { public List<BalanceDO> getBalanceByBatchOffShelf(String itemCode, String inventoryStatus, String projectCode, BigDecimal qty, String locationTypes ) {
// 批次策略 // 批次策略
RuleRespVO ruleRespVOBatch = ruleService.batch(null, null,null,null,null,projectCode,itemCode); RuleRespVO ruleRespVOBatch = ruleService.batch(null, null,null,null,null,projectCode,itemCode);
JSONObject jsonObjectBatch = JSONUtil.parseObj(ruleRespVOBatch.getConfiguration()); JSONObject jsonObjectBatch = JSONUtil.parseObj(ruleRespVOBatch.getConfiguration());
@ -858,6 +860,12 @@ public class JobUtils {
} }
BigDecimal countQty = new BigDecimal(0.000000); BigDecimal countQty = new BigDecimal(0.000000);
for (BalanceDO balanceDO: balanceDOList) { for (BalanceDO balanceDO: balanceDOList) {
// 根据库位类型进行过滤
if (locationTypes != null && !locationTypes.equals("")) {
if(locationTypes.indexOf(locationService.selectLocation(balanceDO.getLocationCode()).getType()) == -1) {
continue;
}
}
// 查询 预计出 求和 数量 // 查询 预计出 求和 数量
// TODO: 后续完善 根据 管理精度查询 // TODO: 后续完善 根据 管理精度查询
QueryWrapper queryWrapperExpectout = new QueryWrapper(); QueryWrapper queryWrapperExpectout = new QueryWrapper();
@ -873,12 +881,18 @@ public class JobUtils {
} }
// balanceDO.getQty().subtract(countQtyExpectout) 扣减预计出数量 // balanceDO.getQty().subtract(countQtyExpectout) 扣减预计出数量
countQty = countQty.add(balanceDO.getQty().subtract(countQtyExpectout)); countQty = countQty.add(balanceDO.getQty().subtract(countQtyExpectout));
if (balanceDO.getLocationCode().isEmpty()) {
throw new UtilException("物品代码:" + balanceDO.getItemCode() + " 库存余额不足");
}
balanceDOListJob.add(balanceDO); balanceDOListJob.add(balanceDO);
// 数据列表循环累加 直到总和大于等于当前物品的qty {countQty >= balanceDO.getQty()} // 数据列表循环累加 直到总和大于等于当前物品的qty {countQty >= balanceDO.getQty()}
if (countQty.compareTo(qty) != -1) { if (countQty.compareTo(qty) != -1) {
break; break;
} }
} }
if (balanceDOListJob == null || balanceDOListJob.size() == 0) {
throw new UtilException("没有找到推荐的库存");
}
return balanceDOListJob; return balanceDOListJob;
} }

Loading…
Cancel
Save