|
|
@ -2,6 +2,7 @@ package com.win.module.wms.service.putawayRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
|
|
import com.win.framework.dict.core.util.DictFrameworkUtils; |
|
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
@ -10,13 +11,16 @@ import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.putawayRequest.vo.*; |
|
|
|
import com.win.module.wms.convert.putawayRequest.PutawayRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.putawayRequest.PutawayRequestMainConvert; |
|
|
|
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.purchase.PurchaseDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.mysql.putawayRequest.PutawayRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.putawayRequest.PutawayRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.service.customer.CustomerService; |
|
|
@ -26,20 +30,14 @@ import com.win.module.wms.service.purchase.PurchaseMainService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import javax.annotation.Resource; |
|
|
|
import javax.validation.Validator; |
|
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import javax.validation.Validator; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
|
|
|
|
import com.win.module.wms.convert.putawayRequest.PutawayRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.mysql.putawayRequest.PutawayRequestMainMapper; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
@ -82,9 +80,9 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
public Long createPutawayRequestMain(PutawayRequestMainCreateReqVO createReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PutawayRequest"); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayRequest"); |
|
|
|
PutawayRequestMainDO putawayRequestMainDO = validatorToCreate(createReqVO, businesstypeDO,requestsettingDO); |
|
|
|
PutawayRequestMainDO putawayRequestMainDO = validatorToCreate(createReqVO, businesstypeDO, requestsettingDO); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(putawayRequestMainDO.getStatus())) { |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(putawayRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "PutawayRequest", "增加了上架申请", TrendsTypeEnum.CREATE); |
|
|
@ -99,8 +97,8 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
// 校验存在
|
|
|
|
validatePutawayRequestMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
PutawayRequestMainDO putawayRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO,requestsettingDO); |
|
|
|
if(putawayRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode())) { |
|
|
|
PutawayRequestMainDO putawayRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); |
|
|
|
if (putawayRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode())) { |
|
|
|
throw exception(PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW); |
|
|
|
} |
|
|
|
trendsApi.createTrends(updateReqVO.getId(), "PutawayRequestMain", putawayRequestMainDO.toString(), TrendsTypeEnum.UPDATE); |
|
|
@ -131,10 +129,6 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
public PageResult<PutawayRequestMainDO> getPutawayRequestMainSenior(CustomConditions conditions) { |
|
|
|
return putawayRequestMainMapper.selectSenior(conditions); |
|
|
|
} |
|
|
|
@Override |
|
|
|
public List<PutawayRequestMainDO> getPutawayRequestMainList(Collection<Long> ids) { |
|
|
|
return putawayRequestMainMapper.selectBatchIds(ids); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<PutawayRequestMainDO> getPutawayRequestMainPage(PutawayRequestMainPageReqVO pageReqVO) { |
|
|
@ -146,6 +140,11 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
return putawayRequestMainMapper.selectList(exportReqVO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<PutawayRequestMainDO> getPutawayRequestMainList(CustomConditions conditions) { |
|
|
|
return putawayRequestMainMapper.selectSeniorList(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public List<PutawayRequestImportErrorVO> importPutawayRequestList(List<PutawayRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
@ -156,13 +155,13 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayRequest"); |
|
|
|
PutawayRequestMainDO mainDo = PutawayRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = validatorPutawayRequestMainImport(mainDo,businesstypeDO); |
|
|
|
String messageMain = validatorPutawayRequestMainImport(mainDo, businesstypeDO); |
|
|
|
List<PutawayRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PutawayRequestDetailDO> subDOList = PutawayRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (PutawayRequestDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = validatorPutawayRequestDetailImport(detailDO, mainDo,businesstypeDO); |
|
|
|
String messageDetail = validatorPutawayRequestDetailImport(detailDO, mainDo, businesstypeDO); |
|
|
|
if (!messageMain.isEmpty() || messageDetail.isEmpty()) { |
|
|
|
PutawayRequestImportErrorVO importErrorVO = PutawayRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
@ -190,13 +189,13 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
} |
|
|
|
|
|
|
|
// 新增校验
|
|
|
|
private PutawayRequestMainDO validatorToCreate(PutawayRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { |
|
|
|
PutawayRequestMainDO mainDo = validatorMainMethod(createReqVO,businesstypeDO,requestsettingDO); |
|
|
|
private PutawayRequestMainDO validatorToCreate(PutawayRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
PutawayRequestMainDO mainDo = validatorMainMethod(createReqVO, businesstypeDO, requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<PutawayRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PutawayRequestDetailDO> subDOList = PutawayRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (PutawayRequestDetailDO detailDO : subDOList) { |
|
|
|
validatorDetailMethod(detailDO,mainDo,businesstypeDO); |
|
|
|
validatorDetailMethod(detailDO, mainDo, businesstypeDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
@ -211,7 +210,7 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
} |
|
|
|
|
|
|
|
//校验主表公共方法(适用于新增/修改)
|
|
|
|
private PutawayRequestMainDO validatorMainMethod(PutawayRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ |
|
|
|
private PutawayRequestMainDO validatorMainMethod(PutawayRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
PutawayRequestMainDO mainDo = PutawayRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
@ -222,8 +221,9 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
return mainDo; |
|
|
|
} |
|
|
|
|
|
|
|
//校验子表公共方法(适用于新增/修改)
|
|
|
|
private void validatorDetailMethod(PutawayRequestDetailDO detailDo,PutawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
private void validatorDetailMethod(PutawayRequestDetailDO detailDo, PutawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); |
|
|
|
detailDo.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasicDO.getDesc2()); |
|
|
@ -236,7 +236,7 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); |
|
|
|
validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); |
|
|
|
ArrayList<String> inventoryStatus = new ArrayList<>(); |
|
|
|
inventoryStatus.set(0,detailDo.getInventoryStatus()); |
|
|
|
inventoryStatus.set(0, detailDo.getInventoryStatus()); |
|
|
|
validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); |
|
|
|
} |
|
|
|
|
|
|
@ -246,12 +246,11 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorPutawayRequestMainImport(PutawayRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { |
|
|
|
private String validatorPutawayRequestMainImport(PutawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
if (businesstypeDO == null) { |
|
|
|
message.append("根据业务类型设置未查找到采购退货申请的相关业务类型"); |
|
|
|
} |
|
|
|
else { |
|
|
|
} else { |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
@ -259,8 +258,7 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PutawayRequest"); |
|
|
|
if (requestsettingDO == null) { |
|
|
|
message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); |
|
|
|
} |
|
|
|
else { |
|
|
|
} else { |
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
@ -280,7 +278,7 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorPutawayRequestDetailImport(PutawayRequestDetailDO detailDo, PutawayRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { |
|
|
|
private String validatorPutawayRequestDetailImport(PutawayRequestDetailDO detailDo, PutawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); |
|
|
@ -293,9 +291,9 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try{ |
|
|
|
try { |
|
|
|
validatorIfInType(itembasicDO.getType(), businesstypeDO); |
|
|
|
}catch (Exception ex) { |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
@ -306,25 +304,24 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try{ |
|
|
|
try { |
|
|
|
validatorLocation(detailDo.getFromLocationCode()); |
|
|
|
}catch (Exception ex) { |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
|
|
|
|
try{ |
|
|
|
try { |
|
|
|
validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); |
|
|
|
}catch (Exception ex) { |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try{ |
|
|
|
try { |
|
|
|
validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); |
|
|
|
}catch (Exception ex) { |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
ArrayList<String> inventoryStatus = new ArrayList<>(); |
|
|
|
inventoryStatus.set(0,detailDo.getInventoryStatus()); |
|
|
|
inventoryStatus.set(0, detailDo.getInventoryStatus()); |
|
|
|
validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
@ -337,34 +334,37 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
private void ifUomSuccess(String itemUom,String uom) { |
|
|
|
if(!itemUom.equals(uom)){ |
|
|
|
throw exception(ITEMBASIC_CODE_EXISTS,"提示单位"+ uom + "错误,应该是" + itemUom); |
|
|
|
private void ifUomSuccess(String itemUom, String uom) { |
|
|
|
if (!itemUom.equals(uom)) { |
|
|
|
throw exception(ITEMBASIC_CODE_EXISTS, "提示单位" + uom + "错误,应该是" + itemUom); |
|
|
|
} |
|
|
|
} |
|
|
|
private ItembasicDO validatorItembasic(String itemCode){ |
|
|
|
|
|
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
private PurchaseDetailDO validatorPurchaseDetailDo(String pnumber, String psupplierCode, String pitemCode, String poLine){ |
|
|
|
private PurchaseDetailDO validatorPurchaseDetailDo(String pnumber, String psupplierCode, String pitemCode, String poLine) { |
|
|
|
return purchaseMainService.selectPurchaseDetailDoExist(pnumber, psupplierCode, pitemCode, poLine); |
|
|
|
} |
|
|
|
|
|
|
|
private LocationDO validatorLocation(String fromLocationCode){ |
|
|
|
return locationService.selectLocation(fromLocationCode); |
|
|
|
private LocationDO validatorLocation(String fromLocationCode) { |
|
|
|
return locationService.selectLocation(fromLocationCode); |
|
|
|
} |
|
|
|
private void validatorIfInType(String type, BusinesstypeDO businesstypeDO){ |
|
|
|
|
|
|
|
private void validatorIfInType(String type, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifInType(type, businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorIfOutInventoryStatuses(String inventoryStatus,BusinesstypeDO businesstypeDO){ |
|
|
|
private void validatorIfOutInventoryStatuses(String inventoryStatus, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifOutInventoryStatuses(inventoryStatus, businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorIfInToLocationType(String fromLocationCode,BusinesstypeDO businesstypeDO){ |
|
|
|
private void validatorIfInToLocationType(String fromLocationCode, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifInType(fromLocationCode, businesstypeDO); |
|
|
|
} |
|
|
|
private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String fromLocationCode,List<String> inventoryStatus){ |
|
|
|
jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber,batch,fromLocationCode,inventoryStatus); |
|
|
|
|
|
|
|
private void validatorManagementAccuracy(String itemCode, String packingNumber, String batch, String fromLocationCode, List<String> inventoryStatus) { |
|
|
|
jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber, batch, fromLocationCode, inventoryStatus); |
|
|
|
} |
|
|
|
} |
|
|
|