Browse Source

制品上架接口

master
廉洪喜 2 years ago
parent
commit
c52ae6222d
  1. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainUpdateReqVO.java
  2. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java
  3. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java
  4. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java
  5. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java
  6. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestMainDO.java
  7. 399
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java
  8. 21
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainUpdateReqVO.java

@ -1,9 +1,12 @@
package com.win.module.wms.controller.productputawayRequest.vo;
import com.win.framework.excel.core.annotations.SubObject;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailUpdateReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
import java.util.List;
@Schema(description = "管理后台 - 制品上架申请主更新 Request VO")
@Data
@ -15,4 +18,7 @@ public class ProductputawayRequestMainUpdateReqVO extends ProductputawayRequestM
@NotNull(message = "id不能为空")
private Long id;
@SubObject
@Schema(description = "子表数据")
private List<ProductputawayRequestDetailUpdateReqVO> subList;
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java

@ -3,10 +3,6 @@ package com.win.module.wms.controller.productscrapRequest.vo;
import com.win.framework.excel.core.annotations.OnlyOne;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
@ -24,23 +20,19 @@ public class ProductscrapRequestMainBaseVO {
private Long id;
@Schema(description = "从仓库代码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "从仓库代码不能为空")
private String fromWarehouseCode;
@Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED)
@OnlyOne
@NotNull(message = "单据号不能为空")
private String number;
@Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "业务类型不能为空")
private String businessType;
@Schema(description = "备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "创建时间不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime createTime;
@ -70,11 +62,9 @@ public class ProductscrapRequestMainBaseVO {
private String updater;
@Schema(description = "从库位类型范围", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "从库位类型范围不能为空")
private String fromLocationTypes;
@Schema(description = "从库区代码范围", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "从库区代码范围不能为空")
private String fromAreaCodes;
@Schema(description = "自动提交", requiredMode = Schema.RequiredMode.REQUIRED)

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

@ -4,11 +4,13 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailUpdateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.*;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailExcelVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO;
@ -41,6 +43,8 @@ public interface ProductputawayRequestDetailConvert {
List<ProductputawayRequestDetailExcelVO> convertList02(List<ProductputawayRequestDetailDO> list);
List<ProductputawayRequestDetailDO> convertList03(List<ProductputawayRequestDetailCreateReqVO> list);
List<ProductputawayRequestDetailDO> convertList05(List<ProductputawayRequestDetailUpdateReqVO> list);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),

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

@ -4,9 +4,15 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainBaseVO;
import com.win.module.wms.controller.productputawayRequest.vo.*;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestImportErrorVO;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainCreateReqVO;
import com.win.module.wms.controller.purchaseclaimRequest.vo.*;
import com.win.module.wms.controller.workstation.vo.WorkstationImportExcelVo;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
@ -28,6 +34,8 @@ public interface ProductputawayRequestMainConvert {
ProductputawayRequestMainDO convert(ProductputawayRequestMainCreateReqVO bean);
ProductputawayRequestMainDO convert( ProductputawayRequestMainBaseVO bean);
ProductputawayRequestMainDO convert(ProductputawayRequestMainUpdateReqVO bean);
ProductputawayRequestMainRespVO convert(ProductputawayRequestMainDO bean);
@ -40,6 +48,8 @@ public interface ProductputawayRequestMainConvert {
ProductputawayRequestMainDO convert(ProductputawayImportExcelVO bean);
ProductputawayImportErrorVO convert(ProductputawayRequestMainCreateReqVO mainVo, ProductputawayRequestDetailDO detailDo);
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java

@ -4,10 +4,9 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO;
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainExcelVO;
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainRespVO;
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainUpdateReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainBaseVO;
import com.win.module.wms.controller.productreceiptRequest.vo.*;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO;
@ -22,6 +21,8 @@ public interface ProductreceiptRequestMainConvert {
ProductreceiptRequestMainConvert INSTANCE = Mappers.getMapper(ProductreceiptRequestMainConvert.class);
ProductreceiptRequestMainDO convert (ProductreceiptRequestMainBaseVO bean);
ProductreceiptRequestMainDO convert(ProductreceiptRequestMainCreateReqVO bean);
ProductreceiptRequestMainDO convert(ProductreceiptRequestMainUpdateReqVO bean);

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestMainDO.java

@ -33,12 +33,10 @@ public class ProductputawayRequestMainDO extends BaseDO {
/**
* 从仓库代码
*/
@NotBlank
private String fromWarehouseCode;
/**
* 到仓库代码
*/
@NotBlank
private String toWarehouseCode;
/**
* 从库位类型范围
@ -97,7 +95,6 @@ public class ProductputawayRequestMainDO extends BaseDO {
/**
* 部门
*/
@NotBlank
private String departmentCode;
/**
* 状态

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

@ -4,14 +4,32 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.util.StrUtil;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.dict.dto.DictDataRespDTO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainUpdateReqVO;
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainBaseVO;
import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO;
import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestImportErrorVO;
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert;
import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestMainConvert;
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO;
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO;
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.productreceiptRequest.ProductreceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO;
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestDetailMapper;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.util.*;
import com.win.framework.common.pojo.CustomConditions;
@ -32,7 +50,9 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import com.win.module.wms.convert.productputawayRequest.*;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@ -69,7 +89,8 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
@Resource
private BusinesstypeService businesstypeService;
@Resource
private Validator validator;
@Resource
private LocationService locationService;
@ -79,24 +100,109 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
@Resource
private DictDataApi dictDataApi;
@Resource
private TrendsApi trendsApi;
@Override
public Long createProductputawayRequestMain(ProductputawayRequestMainCreateReqVO createReqVO) {
// 插入
ProductputawayRequestMainDO productputawayRequestMain = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO);
productputawayRequestMainMapper.insert(productputawayRequestMain);
// 返回
return productputawayRequestMain.getId();
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest");
ProductputawayRequestMainDO productputawayRequestMainDO = validatorToCreate(createReqVO,requestsettingDO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "ProductputawayRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE);
return productputawayRequestMainDO.getId();
}
private ProductputawayRequestMainDO validatorToCreate( ProductputawayRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest");
ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<ProductputawayRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<ProductputawayRequestDetailDO> subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList03(subList);
for(ProductputawayRequestDetailDO productputawayRequestDetailDO: subDOList){
validateDetailMethod(productputawayRequestDetailDO,businesstypeDO,productputawayRequestMainDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
productputawayRequestMainDO.setNumber(number);
productputawayRequestMainMapper.insert(productputawayRequestMainDO);
for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) {
productputawayRequestDetailDO.setMasterId(productputawayRequestMainDO.getId());
productputawayRequestDetailDO.setNumber(productputawayRequestMainDO.getNumber());
}
productputawayRequestDetailMapper.insertBatch(subDOList);
return productputawayRequestMainDO;
}
private void validateDetailMethod(ProductputawayRequestDetailDO productputawayRequestDetailDO, BusinesstypeDO businesstypeDO, ProductputawayRequestMainDO productputawayRequestMainDO) {
ItembasicDO itembasicDO = validatorItembasic(productputawayRequestDetailDO.getItemCode());
productputawayRequestDetailDO.setItemDesc1(itembasicDO.getDesc1());
productputawayRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
productputawayRequestDetailDO.setItemName(itembasicDO.getName());
productputawayRequestDetailDO.setProjectCode(itembasicDO.getProject());
validatorLocation(productputawayRequestDetailDO.getFromLocationCode());
IfInToLocationType(productputawayRequestDetailDO.getFromLocationCode(),businesstypeDO);
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(productputawayRequestDetailDO.getInventoryStatus());
String value = dictDataRespDTO.getValue();
String[] businessArray = value.split(",");
List<String> business = Arrays.asList(businessArray);
List<BalanceDO> balance = selectlocationReturnManagement(productputawayRequestDetailDO.getItemCode(), productputawayRequestDetailDO.getPackingNumber(),
productputawayRequestDetailDO.getBatch(), productputawayRequestDetailDO.getFromLocationCode(), business);
for(BalanceDO balance2 :balance){
productputawayRequestMainDO.setFromWarehouseCode(balance2.getWarehouseCode());
productputawayRequestMainDO.setDueTime(balance2.getExpireDate());
}
BalanceDO blance1 = balance.get(0);
isqty(productputawayRequestDetailDO.getQty(),blance1.getQty());
}
private ProductputawayRequestMainDO validateMainMethod(ProductputawayRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){
ProductputawayRequestMainDO productputawayRequestMainDO = ProductputawayRequestMainConvert.INSTANCE.convert(baseVO);
productputawayRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
productputawayRequestMainDO.setRequestTime(LocalDateTime.now());
productputawayRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
productputawayRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
productputawayRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
productputawayRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
productputawayRequestMainDO.setBusinessType(businesstypeDO.getCode());
productputawayRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
productputawayRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
productputawayRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
productputawayRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
return productputawayRequestMainDO;
}
@Override
public void updateProductputawayRequestMain(ProductputawayRequestMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest");
// 校验存在
validateProductputawayRequestMainExists(updateReqVO.getId());
// 更新
ProductputawayRequestMainDO updateObj = ProductputawayRequestMainConvert.INSTANCE.convert(updateReqVO);
productputawayRequestMainMapper.updateById(updateObj);
ProductputawayRequestMainDO productputawayRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO);
if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE);
}
private ProductputawayRequestMainDO validatorToUpdate(ProductputawayRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest");
ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
//子表校验
List<ProductputawayRequestDetailUpdateReqVO> subList = updateReqVO.getSubList();
if(subList!=null) {
List<ProductputawayRequestDetailDO> subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList05(subList);
for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) {
validateDetailMethod(productputawayRequestDetailDO, businesstypeDO, productputawayRequestMainDO);
}
productputawayRequestDetailMapper.updateBatch(subDOList);
}
productputawayRequestMainMapper.updateById(productputawayRequestMainDO);
return productputawayRequestMainDO;
}
@Override
public void deleteProductputawayRequestMain(Long id) {
// 校验存在
@ -135,48 +241,13 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
public PageResult<ProductputawayRequestMainDO> getProductputawayRequestMainSenior(CustomConditions conditions) {
return productputawayRequestMainMapper.selectSenior(conditions);
}
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public List<ProductputawayImportExcelVO> importProductputawayList(List<ProductputawayImportExcelVO> importProductputaways, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(importProductputaways)) {
throw exception(WORKSTATION_IMPORT_LIST_IS_EMPTY);
}
List<ProductputawayImportExcelVO> errorList = new ArrayList<>();
importProductputaways.forEach(productputaway -> {
String massage = "";
// 校验,判断是否有不符合的原因
if(mode != null){
try{
validateProductputawayExists(null);
} catch(Exception ex){
massage += ex.getMessage() + ",";
}
if(StrUtil.isNotEmpty(massage)){
massage.substring(0,massage.length()-1);
errorList.add(productputaway);
}
// 判断如果不存在,在进行插入
if(errorList == null){
ProductputawayRequestMainDO existAccountcalendar = productputawayRequestMainMapper.selectByNumber(productputaway.getPackingNumber());
if (existAccountcalendar == null&& mode != 3) {
productputawayRequestMainMapper.insert(ProductputawayRequestMainConvert.INSTANCE.convert(productputaway));
}
else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新
ProductputawayRequestMainDO productputawayDo = ProductputawayRequestMainConvert.INSTANCE.convert(productputaway);
productputawayDo.setId(existAccountcalendar.getId());
productputawayRequestMainMapper.updateById(productputawayDo);
}
}
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
@Override
public List<ProductputawayImportExcelVO> importProductputawayList(List<ProductputawayImportExcelVO> importProductputaways, Integer mode, boolean updatePart) {
return null;
}
private void validateproductputawayForCreateOrUpdate(Long id,String code,String workshopCode,String productionLineCode,String available) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> {
@ -203,124 +274,154 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque
if(uom2.equals(value)){
return "ture";
}else {
throw new UtilException("计量单位"+uom2+"错误,应该是"+value);
throw exception(UOM_ERRORR,uom2,value);
}
}
public String isqty(BigDecimal qty1, BigDecimal qty2) {
if(qty1.compareTo(qty2) < 0){
return "ture";
} else {
throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1);
throw exception(QTY_ERRORR,qty2,qty1);
}
}
private String validateProductputawayRequestMainImport(ProductputawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
mainDo.setRequestTime(LocalDateTime.now());
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest");
if (requestsettingDO == null) {
message.append("未查找到制品上架申请的相关申请设置");
} else {
mainDo.setAutoAgree(requestsettingDO.getAutoAgree());
mainDo.setAutoCommit(requestsettingDO.getAutoCommit());
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
if (businesstypeDO == null) {
message.append("根据单据设置未查找到制品上架申请的相关业务类型");
} else {
mainDo.setBusinessType(businesstypeDO.getCode());
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
private ItembasicDO validatorItembasic(String itemCode) {
return itembasicService.selectItembasic(itemCode);
}
private void validatorLocation(String locationCode){
locationService.selectLocation(locationCode);
}
private void IfInToLocationType( String fromlocationcode,BusinesstypeDO bus ){
jobUtils.ifInToLocationType(fromlocationcode,bus);
}
List<BalanceDO> selectlocationReturnManagement(String ItemCode, String packingNumber,
String batch , String fromLocationCode , List<String> business){
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracy(ItemCode, packingNumber,
batch,fromLocationCode, business);
return balanceDO;
}
private String validateProductputawayRequestDetailImport(ProductputawayRequestDetailDO detailDo, ProductputawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
try {
ItembasicDO item = validatorItembasic(detailDo.getItemCode());
detailDo.setItemDesc1(item.getDesc1());
detailDo.setItemDesc2(item.getDesc2());
detailDo.setItemName(item.getName());
detailDo.setProjectCode(item.getProject());
try{
Isuom(item.getUom(),detailDo.getUom());
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
validatorLocation(detailDo.getFromLocationCode());
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
IfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO);
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDo.getInventoryStatus());
String value = dictDataRespDTO.getValue();
String[] businessArray = value.split(",");
List<String> business = Arrays.asList(businessArray);
try {
List<BalanceDO> balance = selectlocationReturnManagement(detailDo.getItemCode(), detailDo.getPackingNumber(),
detailDo.getBatch(), detailDo.getFromLocationCode(), business);
try{
for(BalanceDO balance2 :balance){
mainDo.setFromWarehouseCode(balance2.getWarehouseCode());
mainDo.setDueTime(balance2.getExpireDate());
}
BalanceDO blance1 = balance.get(0);
isqty(detailDo.getQty(),blance1.getQty());
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
}catch(Exception ex) {
message.append(ex.getMessage()).append(",");
}
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
public List<ProductputawayImportErrorVO> importProductputawayRequestList(List<ProductputawayRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PRODUCTPUTAWAY_REQUEST_NOT_EXISTS);
}
List<ProductputawayImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
String massage = "";
boolean isError = false;
RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest");
createReqVO.setAutoCommit(requestsetting.getAutoCommit());
createReqVO.setAutoAgree(requestsetting.getAutoAgree());
createReqVO.setAutoExecute(requestsetting.getAutoExecute());
createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord());
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest");
ProductputawayRequestMainDO mainDo = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validateProductputawayRequestMainImport(mainDo, businesstypeDO);
List<ProductputawayRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<ProductputawayRequestDetailDO> subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList03(subList);
// 新增子表数据
for (ProductputawayRequestDetailDO detailDO : subDOList) {
if (mode != null) {
try {
validateProductputawayExists(null);
} catch (Exception ex) {
massage += ex.getMessage() + ",";
}
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
try {
ItembasicDO item = itembasicService.selectItembasic(detailDO.getItemCode());
detailDO.setItemDesc1(item.getDesc1());
detailDO.setItemDesc2(item.getDesc2());
detailDO.setItemName(item.getName());
detailDO.setProjectCode(item.getProject());
try{
Isuom(item.getUom(),detailDO.getUom());
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
} catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
locationService.selectLocation(detailDO.getFromLocationCode());
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
try{
BusinesstypeDO bus = businesstypeService.selectBusinesstypeExist("ProductPutawayRequest");
createReqVO.setBusinessType(bus.getCode());
createReqVO.setFromLocationTypes(bus.getOutLocationTypes());
createReqVO.setToLocationTypes(bus.getInLocationTypes());
createReqVO.setFromAreaCodes(bus.getOutAreaCodes());
createReqVO.setToAreaCodes(bus.getInAreaCodes());
//TODO TB ---TB1 效验业务类型相关属性
try{
jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),bus);
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDO.getInventoryStatus());
String value = dictDataRespDTO.getValue();
String[] businessArray = value.split(",");
List<String> business = Arrays.asList(businessArray);
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber(),
detailDO.getBatch(), detailDO.getFromLocationCode(), business);
try{
BalanceDO blance1 = balance.get(0);
isqty(detailDO.getQty(),blance1.getQty());
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
}catch (Exception ex) {
isError = true;
massage += ex.getMessage() + ",";
}
if(isError) {
ProductputawayImportErrorVO importVO = ProductputawayRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO);
importVO.setImportStatus("失败");
importVO.setImportRemark(massage.substring(0, massage.length() - 1));
errorList.add(importVO);
}
if(!isError) {
if( mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
createReqVO.setNumber(number);
ProductputawayRequestMainDO createObj = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO);
productputawayRequestMainMapper.insert(createObj);
productputawayRequestDetailMapper.insertBatch(subDOList);
}
else if(mode != 2){
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode());
createReqVO.setNumber(number);
ProductputawayRequestMainDO createObj = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO);
productputawayRequestMainMapper.updateById(createObj);
productputawayRequestDetailMapper.updateBatch(subDOList);
}
}
}
}
});
boolean flag = true;
for (ProductputawayRequestDetailDO detailDO : subDOList) {
String messageDetail = validateProductputawayRequestDetailImport(detailDO, mainDo, businesstypeDO);
if (!"".equals(messageMain) ||!"".equals(messageDetail) ) {
ProductputawayImportErrorVO importErrorVO = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
}
//写入数据
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
productputawayRequestMainMapper.insert(mainDo);
for (ProductputawayRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());
detailDO.setNumber(number);
}
productputawayRequestDetailMapper.insertBatch(subDOList);
}
});
return errorList;
}

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

@ -117,18 +117,19 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
@Override
public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = new RequestsettingDO();
ProductscrapRequestMainDO productscrapRequestMainDO = validatorToCreate(createReqVO, requestsettingDO);
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest");
ProductscrapRequestMainDO productscrapRequestMainDO = validatorToCreate(createReqVO);
//调用自动执行方法
if (RequestStatusEnum.HANDLING.getCode().equals(productscrapRequestMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE);
trendsApi.createTrends(requestsettingDO.getId(), "ProductScrapRequest", "增加了制品报废申请", TrendsTypeEnum.CREATE);
return productscrapRequestMainDO.getId();
}
private ProductscrapRequestMainDO validatorToCreate(ProductscrapRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = new BusinesstypeDO();
private ProductscrapRequestMainDO validatorToCreate(ProductscrapRequestMainCreateReqVO createReqVO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest");
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest");
ProductscrapRequestMainDO productscrapRequestMainDO = validateMainMethod(createReqVO, businesstypeDO, requestsettingDO);
//子表校验
List<ProductscrapRequestDetailCreateReqVO> subList = createReqVO.getSubList();
@ -154,13 +155,17 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
productscrapRequestDetailDO.setItemName(itembasic.getName());
productscrapRequestDetailDO.setProjectCode(itembasic.getProject());
Isuom(productscrapRequestDetailDO.getUom(), itembasic.getUom());
jobUtils.selectItembasicExist(itembasic.getType(), businesstypeDO);
jobUtils.selectItembasicExist(itembasic.getCode(), businesstypeDO);
jobUtils.ifInToLocationType(productscrapRequestDetailDO.getFromLocationCode(), businesstypeDO);
jobUtils.ifOutInventoryStatuses(productscrapRequestDetailDO.getInventoryStatus(), businesstypeDO);
List<String> business = validatorbusinessbasic(productscrapRequestDetailDO.getInventoryStatus());
List<BalanceDO> balance = validatorbalance(productscrapRequestDetailDO.getItemCode(), productscrapRequestDetailDO.getPackingNumber(),
productscrapRequestDetailDO.getBatch(), productscrapRequestDetailDO.getFromLocationCode(), business);
BalanceDO blance1 = balance.get(0);
for(BalanceDO balance2 :balance) {
productscrapRequestMainDO.setFromWarehouseCode(balance2.getWarehouseCode());
productscrapRequestMainDO.setDueTime(balance2.getExpireDate());
}
isqty(productscrapRequestDetailDO.getQty(), blance1.getQty());
}
@ -169,12 +174,10 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
ProductscrapRequestMainDO productscrapRequestMainDO = ProductscrapRequestMainConvert.INSTANCE.convert(baseVO);
productscrapRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
productscrapRequestMainDO.setRequestTime(LocalDateTime.now());
requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest");
productscrapRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
productscrapRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
productscrapRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
productscrapRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest");
productscrapRequestMainDO.setBusinessType(businesstypeDO.getCode());
productscrapRequestMainDO.setFromLocationTypes(businesstypeDO.getInLocationTypes());
productscrapRequestMainDO.setFromAreaCodes(businesstypeDO.getInAreaCodes());
@ -390,7 +393,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa
}
//写入数据
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_SCRAP_REQUEST.getCode());
mainDo.setNumber(number);
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
productscrapRequestMainMapper.insert(mainDo);

Loading…
Cancel
Save