|
|
@ -1,42 +1,48 @@ |
|
|
|
package com.win.module.wms.service.transferissueRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
|
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; |
|
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.transferissueRequest.vo.*; |
|
|
|
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.transferissueRequest.TransferissueRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.balance.BalanceDO; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
|
import com.win.module.wms.dal.dataobject.location.LocationDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO; |
|
|
|
import com.win.module.wms.dal.mysql.transferissueRequest.TransferissueRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.transferissueRequest.TransferissueRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
import com.win.module.wms.service.businesstype.BusinesstypeService; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.location.LocationService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
|
import com.win.module.wms.service.supplieritem.SupplieritemService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import javax.validation.Validator; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.TIME_AFTER; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS; |
|
|
|
|
|
|
|
/** |
|
|
@ -53,39 +59,119 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest |
|
|
|
@Resource |
|
|
|
private TransferissueRequestDetailMapper transferissueRequestDetailMapper; |
|
|
|
@Resource |
|
|
|
private ShiftService shiftService; |
|
|
|
private LocationService locationService; |
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private SupplieritemService supplieritemService; |
|
|
|
private Validator validator; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private LocationService locationService; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
@Resource |
|
|
|
private BusinesstypeService businesstypeService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createTransferissueRequestMain(TransferissueRequestMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
TransferissueRequestMainDO transferissueRequestMain = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
transferissueRequestMainMapper.insert(transferissueRequestMain); |
|
|
|
// 返回
|
|
|
|
return transferissueRequestMain.getId(); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); |
|
|
|
TransferissueRequestMainDO transferissueRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(transferissueRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "TransferDeliverRequest", "增加了调拨出库申请", TrendsTypeEnum.CREATE); |
|
|
|
return transferissueRequestMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
private TransferissueRequestMainDO validatorToCreate(TransferissueRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest"); |
|
|
|
TransferissueRequestMainDO transferissueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); |
|
|
|
List<TransferissueRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<TransferissueRequestDetailDO> subDOList = TransferissueRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for(TransferissueRequestDetailDO transferissueRequestDetailDO: subDOList){ |
|
|
|
validateDetailMethod(transferissueRequestDetailDO,businesstypeDO,transferissueRequestMainDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
transferissueRequestMainDO.setNumber(number); |
|
|
|
transferissueRequestMainMapper.insert(transferissueRequestMainDO); |
|
|
|
for(TransferissueRequestDetailDO transferissueRequestDetailDO: subDOList){ |
|
|
|
transferissueRequestDetailDO.setMasterId(transferissueRequestMainDO.getId()); |
|
|
|
transferissueRequestDetailDO.setNumber(transferissueRequestMainDO.getNumber()); |
|
|
|
} |
|
|
|
transferissueRequestDetailMapper.insertBatch(subDOList); |
|
|
|
return transferissueRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void validateDetailMethod(TransferissueRequestDetailDO transferissueRequestDetailDO, BusinesstypeDO businesstypeDO, TransferissueRequestMainDO transferissueRequestMainDO) { |
|
|
|
transferissueRequestDetailDO.setCreateTime(LocalDateTime.now()); |
|
|
|
ItembasicDO item = validatorItembasic(transferissueRequestDetailDO.getItemCode()); |
|
|
|
transferissueRequestDetailDO.setItemDesc1(item.getDesc1()); |
|
|
|
transferissueRequestDetailDO.setItemDesc2(item.getDesc2()); |
|
|
|
transferissueRequestDetailDO.setItemName(item.getName()); |
|
|
|
transferissueRequestDetailDO.setUom(item.getUom()); |
|
|
|
transferissueRequestDetailDO.setProjectCode(item.getProject()); |
|
|
|
validatorLocation(transferissueRequestDetailDO.getToLocationCode()); |
|
|
|
jobUtils.ifInToLocationType(transferissueRequestDetailDO.getToLocationCode(), businesstypeDO); |
|
|
|
jobUtils.ifOutInventoryStatuses(transferissueRequestDetailDO.getInventoryStatus(), businesstypeDO); |
|
|
|
List<BalanceDO> balance = validatebalance(transferissueRequestDetailDO); |
|
|
|
for(BalanceDO balancedo: balance ) { |
|
|
|
transferissueRequestMainDO.setFromWarehouseCode(balancedo.getWarehouseCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private TransferissueRequestMainDO validateMainMethod(TransferissueRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ |
|
|
|
TransferissueRequestMainDO transferissueRequestMainDO = TransferissueRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
transferissueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "1")); |
|
|
|
transferissueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
transferissueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
transferissueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
transferissueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
transferissueRequestMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
transferissueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
transferissueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
transferissueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
transferissueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
return transferissueRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateTransferissueRequestMain(TransferissueRequestMainUpdateReqVO updateReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); |
|
|
|
// 校验存在
|
|
|
|
validateTransferissueRequestMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
TransferissueRequestMainDO updateObj = TransferissueRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
transferissueRequestMainMapper.updateById(updateObj); |
|
|
|
TransferissueRequestMainDO transferissueRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(transferissueRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "TransferDeliverRequest", "增加了调拨出库申请", TrendsTypeEnum.CREATE); |
|
|
|
} |
|
|
|
|
|
|
|
private TransferissueRequestMainDO validatorToUpdate(TransferissueRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest"); |
|
|
|
TransferissueRequestMainDO transferissueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<TransferissueRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
|
if(!subList.isEmpty()) { |
|
|
|
List<TransferissueRequestDetailDO> subDOList = TransferissueRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
|
for (TransferissueRequestDetailDO transferissueRequestDetailDO : subDOList) { |
|
|
|
validateDetailMethod(transferissueRequestDetailDO, businesstypeDO, transferissueRequestMainDO); |
|
|
|
} |
|
|
|
transferissueRequestDetailMapper.updateBatch(subDOList); |
|
|
|
} |
|
|
|
transferissueRequestMainMapper.updateById(transferissueRequestMainDO); |
|
|
|
return transferissueRequestMainDO; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -127,116 +213,148 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest |
|
|
|
return transferissueRequestMainMapper.selectList(exportReqVO); |
|
|
|
} |
|
|
|
|
|
|
|
public List<TransferissueRequestMainImportErrorVO> importTransferissueRequestMainList(List<TransferissueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
|
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
List<TransferissueRequestMainImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
|
|
|
|
String messageMain = ""; |
|
|
|
//主表的验证
|
|
|
|
//子表的验证
|
|
|
|
List<TransferissueRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<TransferissueRequestDetailDO> subDOList = TransferissueRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (TransferissueRequestDetailDO purchasePlanDetailDO : subDOList) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验物品基础信息
|
|
|
|
|
|
|
|
private LocationDO validatorLocation(String Location){ |
|
|
|
|
|
|
|
return locationService.selectLocation(Location); |
|
|
|
} |
|
|
|
|
|
|
|
private void validordurtime(LocalDateTime durtime){ |
|
|
|
if(!durtime.isAfter(LocalDateTime.now())){ |
|
|
|
throw exception(TIME_AFTER,LocalDateTime.now(),durtime); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private String validateTransferissueRequestMainImport(TransferissueRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
mainDo.setRequestTime(LocalDateTime.now()); |
|
|
|
mainDo.setCreateTime(LocalDateTime.now()); |
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode()); |
|
|
|
if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) { |
|
|
|
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ","; |
|
|
|
validordurtime(mainDo.getDueTime()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); |
|
|
|
if (requestsettingDO == null) { |
|
|
|
message.append("未查找到制品上架申请的相关申请设置"); |
|
|
|
} else { |
|
|
|
purchasePlanDetailDO.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
purchasePlanDetailDO.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
purchasePlanDetailDO.setItemName(itembasicDO.getName()); |
|
|
|
purchasePlanDetailDO.setProjectCode(itembasicDO.getProject()); |
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
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 { |
|
|
|
BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist("UnplannedReceipt"); |
|
|
|
jobUtils.ifInToLocationType(purchasePlanDetailDO.getToLocationCode(), businesstypeDO); |
|
|
|
// jobUtils.ifInToLocationType(createReqVO.GETf(), businesstypeDO);
|
|
|
|
jobUtils.ifOutInventoryStatuses(purchasePlanDetailDO.getInventoryStatus(), businesstypeDO); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
// 校验库存余额是否存在
|
|
|
|
try { |
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
inventoryStatus.add(purchasePlanDetailDO.getInventoryStatus()); |
|
|
|
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchasePlanDetailDO.getItemCode(), purchasePlanDetailDO.getPackingNumber() |
|
|
|
, purchasePlanDetailDO.getBatch(), purchasePlanDetailDO.getToLocationCode(), inventoryStatus); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
|
|
|
|
TransferissueRequestDetailCreateReqVO purchasePlanDetailCreateReqVO = TransferissueRequestDetailConvert.INSTANCE.convert1(purchasePlanDetailDO); |
|
|
|
TransferissueRequestMainImportErrorVO importVO = TransferissueRequestDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO); |
|
|
|
//进行子表的错误统计
|
|
|
|
//主表没有错误 写入库里
|
|
|
|
if (!messageMain.equals("") || !messageDetail.equals("")) { |
|
|
|
importVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importVO); |
|
|
|
} else { |
|
|
|
purchasePlanDetailDO.setNumber(createReqVO.getNumber()); |
|
|
|
purchasePlanDetailDO.setMasterId(createReqVO.getId()); |
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
private List<BalanceDO> validatebalance(TransferissueRequestDetailDO detailDo){ |
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
inventoryStatus.add(detailDo.getInventoryStatus()); |
|
|
|
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getToLocationCode(), inventoryStatus); |
|
|
|
return balanceDO; |
|
|
|
} |
|
|
|
|
|
|
|
if (errorList.isEmpty()) { |
|
|
|
TransferissueRequestMainDO existPurchaseclaimRequestMainDO = transferissueRequestMainMapper.selectByCarrierCode(createReqVO.getCarrierCode()); |
|
|
|
// 判断如果不存在,在进行插入
|
|
|
|
if (existPurchaseclaimRequestMainDO == null &&mode != 3) { |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
|
|
|
|
private String validateTransferissueRequestDetailImport(TransferissueRequestDetailDO detailDo, TransferissueRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
detailDo.setCreateTime(LocalDateTime.now()); |
|
|
|
try{ |
|
|
|
ItembasicDO item = validatorItembasic(detailDo.getItemCode()); |
|
|
|
detailDo.setItemDesc1(item.getDesc1()); |
|
|
|
detailDo.setItemDesc2(item.getDesc2()); |
|
|
|
detailDo.setItemName(item.getName()); |
|
|
|
detailDo.setUom(item.getUom()); |
|
|
|
detailDo.setProjectCode(item.getProject()); |
|
|
|
}catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try{ |
|
|
|
LocationDO location = validatorLocation(detailDo.getToLocationCode()); |
|
|
|
}catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try{ |
|
|
|
jobUtils.ifInToLocationType(detailDo.getToLocationCode(), businesstypeDO); |
|
|
|
}catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try{ |
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); |
|
|
|
}catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try{ |
|
|
|
List<BalanceDO> balance = validatebalance(detailDo); |
|
|
|
for(BalanceDO balancedo: balance ){ |
|
|
|
mainDo.setFromWarehouseCode(balancedo.getWarehouseCode()); |
|
|
|
} |
|
|
|
}catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); |
|
|
|
if (requestsettingDO != null) { |
|
|
|
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
TransferissueRequestMainDO createObj = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
transferissueRequestMainMapper.insert(createObj); |
|
|
|
transferissueRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} else if (existPurchaseclaimRequestMainDO == null &&mode != 2) { |
|
|
|
|
|
|
|
public List<TransferissueRequestMainImportErrorVO> importTransferissueRequestMainList(List<TransferissueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
|
throw exception(TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
List<TransferissueRequestMainImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
TransferissueRequestMainDO mainDo = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = validateTransferissueRequestMainImport(mainDo, businesstypeDO); |
|
|
|
List<TransferissueRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<TransferissueRequestDetailDO> subDOList = TransferissueRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
boolean flag = true; |
|
|
|
for (TransferissueRequestDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = validateTransferissueRequestDetailImport(detailDO, mainDo, businesstypeDO); |
|
|
|
if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { |
|
|
|
TransferissueRequestMainImportErrorVO importErrorVO = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importErrorVO); |
|
|
|
flag = false; |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest"); |
|
|
|
if (requestsettingDO != null) { |
|
|
|
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
TransferissueRequestMainDO createObj = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
transferissueRequestMainMapper.updateById(createObj); |
|
|
|
transferissueRequestDetailMapper.updateBatch(subDOList); |
|
|
|
} |
|
|
|
//写入数据
|
|
|
|
if (flag) { |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_REQUEST.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
requestStatusState.newObject(mainDo.getAutoCommit(), mainDo.getAutoAgree(), mainDo.getAutoExecute()); |
|
|
|
mainDo.setStatus(requestStatusState.getState().getCode()); |
|
|
|
transferissueRequestMainMapper.insert(mainDo); |
|
|
|
for (TransferissueRequestDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
} |
|
|
|
}); |
|
|
|
//错误不为空并非部分更新,手工回滚
|
|
|
|
if (!errorList.isEmpty() && !updatePart) { |
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
|
|
|
transferissueRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
}); |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|