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
List<ProductionreturnRequestImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(7, uom);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
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")
@Operation(summary = "导入生产退料基本信息")
@Operation(summary = "导入合格生产退料")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@ -177,17 +177,40 @@ public class ProductionreturnRequestMainController {
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart,
@RequestParam(value = "businesstypeDO")BusinesstypeDO businesstypeDO,
@RequestParam(value = "requestsettingDO")RequestsettingDO requestsettingDO) throws Exception {
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<ProductionreturnRequestImportVO> list = ExcelUtils.read(file, ProductionreturnRequestImportVO.class);
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);
ConvertUtil<ProductionreturnRequestMainCreateReqVO> convertUtil = new ConvertUtil<>(ProductionreturnRequestMainCreateReqVO.class);
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<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("生产退料基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
String url = ExcelUtils.writeLocalFile("生产退料导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);

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("车间代码")
private String workshopCode;
@ExcelProperty("截止时间")
private String dueTime;
@ExcelProperty("生产线代码")
private String productionLineCode;
@ -42,4 +45,5 @@ public class ProductionreturnRequestImportVO {
@ExcelProperty(value = "计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.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<>();
detailDOList.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额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 -> {
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 {
ProductionlineDO productionlineDO = this.validatorProductionLineCode(detailDo.getProductionLineCode());
detailDo.setToLocationCode(productionlineDO.getRawLocationCode());
// detailDo.setToLocationCode(productionlineDO.getRawLocationCode());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
@ -460,8 +460,10 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom());
validatorProductionLineCode(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);
// if (grounding == null) {
// throw exception(555, "未查找到该条上架策略");
@ -669,13 +671,14 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
issueJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
issueJobMainMapper.insert(issueJobMainDO);
List<IssueJobDetailDO> issueJobDetailDOList = new ArrayList<>();
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
// 根据发料申请子表数据进行分析
detailDO.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额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 -> {
IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO();
@ -710,16 +713,16 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService {
BeanUtils.copyProperties(issueJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(issueJobDetailDO.getFromLocationCode());
expectinCreateReqVO.setOwnerCode(issueJobDetailDO.getFromOwnerCode());
expectinCreateReqVO.setLocationCode(item.getToLocationCode());
expectinCreateReqVO.setOwnerCode(item.getToOwnerCode());
expectinCreateReqVOList.add(expectinCreateReqVO);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(issueJobDetailDO, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(issueJobDetailDO.getFromLocationCode());
expectoutCreateReqVO.setOwnerCode(issueJobDetailDO.getFromOwnerCode());
expectoutCreateReqVO.setLocationCode(balanceDOItem.getLocationCode());
expectoutCreateReqVO.setOwnerCode(item.getFromOwnerCode());
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);
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
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)) {
throw exception(PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY);
}
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRequest");
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MaterialReturnRequest");
List<ProductionreturnRequestImportErrorVO> errorList = new ArrayList<>();
createReqVOList.forEach(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<ProductionreturnRequestDetailDO> subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList);
// 是否有错误数据
boolean flag = true;
for (ProductionreturnRequestDetailDO detailDO : subDOList) {
String messageDetail = validatorProductionreturnRequestDetailImport(detailDO, mainDo,businesstypeDO);
String messageDetail = validatorProductionreturnRequestDetailImport(detailDO, mainDo);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
ProductionreturnRequestImportErrorVO importErrorVO = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
@ -257,7 +259,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
* @param mainDo
* @return
*/
private String validatorProductionreturnRequestMainImport(ProductionreturnRequestMainDO mainDo,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) {
private String validatorProductionreturnRequestMainImport(ProductionreturnRequestMainDO mainDo,BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) {
StringBuilder message = new StringBuilder();
try {
validatorWorkshop(mainDo.getWorkshopCode());
@ -265,7 +267,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
message.append(ex.getMessage()).append(",");
}
if (businesstypeDO == null) {
message.append("根据业务类型设置未查找到采购退货申请的相关业务类型");
message.append("根据业务类型设置未查找到相关业务类型");
}
else {
mainDo.setBusinessType(businesstypeDO.getCode());
@ -275,7 +277,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
if (requestsettingDO == null) {
message.append("根据申请单设置未查找到采购退货申请的相关业务类型");
message.append("根据申请单设置未查找相关业务类型");
}
else {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
@ -297,7 +299,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
* @param detailDo
* @return
*/
private String validatorProductionreturnRequestDetailImport(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
private String validatorProductionreturnRequestDetailImport(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo) {
StringBuilder message = new StringBuilder();
try {
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 -> {
// 根据批次策略/下架策略 返回 库存余额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 -> {
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;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -733,9 +734,10 @@ public class JobUtils {
* @param inventoryStatus
* @param projectCode
* @param qty
* @param locationTypes
* @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);
JSONObject jsonObjectBatch = JSONUtil.parseObj(ruleRespVOBatch.getConfiguration());
@ -858,6 +860,12 @@ public class JobUtils {
}
BigDecimal countQty = new BigDecimal(0.000000);
for (BalanceDO balanceDO: balanceDOList) {
// 根据库位类型进行过滤
if (locationTypes != null && !locationTypes.equals("")) {
if(locationTypes.indexOf(locationService.selectLocation(balanceDO.getLocationCode()).getType()) == -1) {
continue;
}
}
// 查询 预计出 求和 数量
// TODO: 后续完善 根据 管理精度查询
QueryWrapper queryWrapperExpectout = new QueryWrapper();
@ -873,12 +881,18 @@ public class JobUtils {
}
// balanceDO.getQty().subtract(countQtyExpectout) 扣减预计出数量
countQty = countQty.add(balanceDO.getQty().subtract(countQtyExpectout));
if (balanceDO.getLocationCode().isEmpty()) {
throw new UtilException("物品代码:" + balanceDO.getItemCode() + " 库存余额不足");
}
balanceDOListJob.add(balanceDO);
// 数据列表循环累加 直到总和大于等于当前物品的qty {countQty >= balanceDO.getQty()}
if (countQty.compareTo(qty) != -1) {
break;
}
}
if (balanceDOListJob == null || balanceDOListJob.size() == 0) {
throw new UtilException("没有找到推荐的库存");
}
return balanceDOListJob;
}

Loading…
Cancel
Save