|
|
@ -4,13 +4,22 @@ import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.exceptions.UtilException; |
|
|
|
import com.google.common.annotations.VisibleForTesting; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
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.dict.DictDataApi; |
|
|
|
import com.win.module.system.api.dict.dto.DictDataRespDTO; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.issueRequest.vo.*; |
|
|
|
import com.win.module.wms.controller.productscrapRequest.vo.*; |
|
|
|
import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; |
|
|
|
import com.win.module.wms.dal.mysql.productscrapRequest.*; |
|
|
|
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.balance.BalanceDO; |
|
|
@ -22,6 +31,7 @@ import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.location.LocationService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
@ -31,17 +41,34 @@ 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 com.win.module.wms.service.itembasic.ItembasicService.*; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.module.wms.controller.productscrapRequest.vo.*; |
|
|
|
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; |
|
|
|
import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestMainMapper; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import javax.validation.Validator; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Arrays; |
|
|
|
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.PRODUCTSCRAP_REQUEST_MAIN_NOT_EXISTS; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTSCRAP_REQUEST_NOT_EXISTS; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* 制品报废申请主 Service 实现类 |
|
|
@ -55,6 +82,9 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
|
@Resource |
|
|
|
private ProductscrapRequestMainMapper productscrapRequestMainMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private Validator validator; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ProductscrapRequestDetailMapper productscrapRequestDetailMapper; |
|
|
|
|
|
|
@ -66,6 +96,8 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
|
|
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
@ -85,13 +117,69 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
ProductscrapRequestMainDO productscrapRequestMain = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
productscrapRequestMainMapper.insert(productscrapRequestMain); |
|
|
|
// 返回
|
|
|
|
return productscrapRequestMain.getId(); |
|
|
|
RequestsettingDO requestsettingDO = new RequestsettingDO(); |
|
|
|
ProductscrapRequestMainDO productscrapRequestMainDO = validatorToCreate(createReqVO, requestsettingDO); |
|
|
|
//调用自动执行方法
|
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(productscrapRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE); |
|
|
|
return productscrapRequestMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
private ProductscrapRequestMainDO validatorToCreate(ProductscrapRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); |
|
|
|
ProductscrapRequestMainDO productscrapRequestMainDO = validateMainMethod(createReqVO, businesstypeDO, requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<ProductscrapRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<ProductscrapRequestDetailDO> subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (ProductscrapRequestDetailDO productscrapRequestDetailDO : subDOList) { |
|
|
|
validateDetailMethod(productscrapRequestDetailDO, businesstypeDO, productscrapRequestMainDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
productscrapRequestMainDO.setNumber(number); |
|
|
|
productscrapRequestMainMapper.insert(productscrapRequestMainDO); |
|
|
|
for (ProductscrapRequestDetailDO productscrapRequestDetailDO : subDOList) { |
|
|
|
productscrapRequestDetailDO.setMasterId(productscrapRequestMainDO.getId()); |
|
|
|
productscrapRequestDetailDO.setNumber(productscrapRequestMainDO.getNumber()); |
|
|
|
} |
|
|
|
productscrapRequestDetailMapper.insertBatch(subDOList); |
|
|
|
return productscrapRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
private void validateDetailMethod(ProductscrapRequestDetailDO productscrapRequestDetailDO, BusinesstypeDO businesstypeDO, ProductscrapRequestMainDO productscrapRequestMainDO) { |
|
|
|
ItembasicDO itembasic = validatorItembasic(productscrapRequestDetailDO.getItemCode()); |
|
|
|
productscrapRequestDetailDO.setItemDesc1(itembasic.getDesc1()); |
|
|
|
productscrapRequestDetailDO.setItemDesc2(itembasic.getDesc2()); |
|
|
|
productscrapRequestDetailDO.setItemName(itembasic.getName()); |
|
|
|
productscrapRequestDetailDO.setProjectCode(itembasic.getProject()); |
|
|
|
Isuom(productscrapRequestDetailDO.getUom(), itembasic.getUom()); |
|
|
|
jobUtils.selectItembasicExist(itembasic.getType(), 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); |
|
|
|
isqty(productscrapRequestDetailDO.getQty(), blance1.getQty()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private ProductscrapRequestMainDO validateMainMethod(ProductscrapRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
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()); |
|
|
|
return productscrapRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
@VisibleForTesting |
|
|
|
private void validateProductscrapExists(Long id) { |
|
|
@ -123,7 +211,9 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<ProductscrapRequestMainDO> getProductscrapRequestMainSenior(CustomConditions conditions) { |
|
|
|
|
|
|
|
return productscrapRequestMainMapper.selectSenior(conditions); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void validateProductscrapRequestMainExists(Long id) { |
|
|
@ -152,142 +242,166 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
|
return productscrapRequestMainMapper.selectList(exportReqVO); |
|
|
|
} |
|
|
|
|
|
|
|
public String Isuom(String uom1, String uom2) { |
|
|
|
private String validateIssueRequestMainImport(ProductscrapRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
mainDo.setRequestTime(LocalDateTime.now()); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest"); |
|
|
|
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.getInLocationTypes()); |
|
|
|
mainDo.setFromAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
} |
|
|
|
|
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void Isuom(String uom1, String uom2) { |
|
|
|
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1); |
|
|
|
String value = dictDataRespDTO.getLabel(); |
|
|
|
if (uom2.equals(value)) { |
|
|
|
return "ture"; |
|
|
|
} else { |
|
|
|
throw new UtilException("计量单位" + uom2 + "错误,应该是" + value); |
|
|
|
DictDataRespDTO dictDataRespDTO1 = dictDataApi.selectDictValue(uom2); |
|
|
|
String value1 = dictDataRespDTO1.getLabel(); |
|
|
|
if (!value1.equals(value)) { |
|
|
|
throw exception(UOM_ERRORR, value1, value); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public String isqty(BigDecimal qty1, BigDecimal qty2) { |
|
|
|
private 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 ItembasicDO validatorItembasic(String itemCode) { |
|
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
private List<String> validatorbusinessbasic(String inventoryStatus) { |
|
|
|
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(inventoryStatus); |
|
|
|
String value = dictDataRespDTO.getValue(); |
|
|
|
String[] businessArray = value.split(","); |
|
|
|
List<String> business = Arrays.asList(businessArray); |
|
|
|
return business; |
|
|
|
} |
|
|
|
|
|
|
|
private List<BalanceDO> validatorbalance(String itemCode, String packingnumber, String batch, String fromLocationCode, List<String> business) { |
|
|
|
List<BalanceDO> balabce = jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingnumber, batch, fromLocationCode, business); |
|
|
|
return balabce; |
|
|
|
} |
|
|
|
|
|
|
|
private String validateProductscrapvRequestDetailImport(ProductscrapRequestDetailDO detailDo, ProductscrapRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
try { |
|
|
|
ItembasicDO itembasic = validatorItembasic(detailDo.getItemCode()); |
|
|
|
detailDo.setItemDesc1(itembasic.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasic.getDesc2()); |
|
|
|
detailDo.setItemName(itembasic.getName()); |
|
|
|
detailDo.setProjectCode(itembasic.getProject()); |
|
|
|
try { |
|
|
|
Isuom(detailDo.getUom(), itembasic.getUom()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
jobUtils.selectItembasicExist(detailDo.getItemCode(), businesstypeDO); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
List<String> business = validatorbusinessbasic(detailDo.getInventoryStatus()); |
|
|
|
try { |
|
|
|
List<BalanceDO> balance = validatorbalance(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(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public List<ProductscrapRequestImportErrorVO> importProductscrapRequestList(List<ProductscrapRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
|
throw exception(PRODUCTSCRAP_REQUEST_NOT_EXISTS); |
|
|
|
} |
|
|
|
List<ProductscrapRequestImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
String massage = ""; |
|
|
|
boolean isError = false; |
|
|
|
|
|
|
|
BusinesstypeDO businesstypeDO = businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); |
|
|
|
ProductscrapRequestMainDO mainDo = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = validateIssueRequestMainImport(mainDo, businesstypeDO); |
|
|
|
List<ProductscrapRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<ProductscrapRequestDetailDO> subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (ProductscrapRequestDetailDO detailDO : subDOList) { |
|
|
|
if (mode != null) { |
|
|
|
try { |
|
|
|
validateProductscrapExists(null); |
|
|
|
} catch (Exception ex) { |
|
|
|
isError = true; |
|
|
|
massage += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
ItembasicDO itembasic = itembasicService.selectItembasic(detailDO.getItemCode()); |
|
|
|
detailDO.setItemDesc1(itembasic.getDesc1()); |
|
|
|
detailDO.setItemDesc2(itembasic.getDesc2()); |
|
|
|
detailDO.setItemName(itembasic.getName()); |
|
|
|
detailDO.setProjectCode(itembasic.getProject()); |
|
|
|
try { |
|
|
|
Isuom(detailDO.getUom(), itembasic.getUom()); |
|
|
|
} catch (Exception ex) { |
|
|
|
isError = true; |
|
|
|
massage += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
BusinesstypeDO businesstype = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); |
|
|
|
createReqVO.setBusinessType(businesstype.getCode()); |
|
|
|
createReqVO.setFromLocationTypes(businesstype.getInLocationTypes()); |
|
|
|
createReqVO.setFromAreaCodes(businesstype.getInAreaCodes()); |
|
|
|
try { |
|
|
|
jobUtils.selectItembasicExist(itembasic.getType(), businesstype); |
|
|
|
} catch (Exception ex) { |
|
|
|
isError = true; |
|
|
|
massage += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
jobUtils.ifInToLocationType(detailDO.getFromLocationCode(), businesstype); |
|
|
|
} catch (Exception ex) { |
|
|
|
isError = true; |
|
|
|
massage += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstype); |
|
|
|
} catch (Exception ex) { |
|
|
|
isError = true; |
|
|
|
massage += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
|
isError = true; |
|
|
|
massage += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
|
|
|
|
} catch (Exception ex) { |
|
|
|
isError = true; |
|
|
|
massage += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
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() + ","; |
|
|
|
} |
|
|
|
if (isError) { |
|
|
|
ProductscrapRequestImportErrorVO importVO = ProductscrapRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importVO.setImportStatus("失败"); |
|
|
|
importVO.setImportRemark(massage.substring(0, massage.length() - 1)); |
|
|
|
errorList.add(importVO); |
|
|
|
} |
|
|
|
if (!isError) { |
|
|
|
detailDO.setNumber(createReqVO.getNumber()); |
|
|
|
detailDO.setMasterId(createReqVO.getId()); |
|
|
|
} |
|
|
|
if (!errorList.isEmpty()) { |
|
|
|
// 判断如果不存在,在进行插入
|
|
|
|
|
|
|
|
RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); |
|
|
|
if (requestsetting != null) { |
|
|
|
createReqVO.setAutoCommit(requestsetting.getAutoCommit()); |
|
|
|
createReqVO.setAutoAgree(requestsetting.getAutoAgree()); |
|
|
|
createReqVO.setAutoExecute(requestsetting.getAutoExecute()); |
|
|
|
createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
ProductscrapRequestMainDO createObj = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
productscrapRequestMainMapper.insert(createObj); |
|
|
|
productscrapRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
String messageDetail = validateProductscrapvRequestDetailImport(detailDO, mainDo, businesstypeDO); |
|
|
|
if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { |
|
|
|
ProductscrapRequestImportErrorVO importErrorVO = ProductscrapRequestMainConvert.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.PURCHASE_RECEIPT_REQUEST.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
productscrapRequestMainMapper.insert(mainDo); |
|
|
|
for (ProductscrapRequestDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
} |
|
|
|
productscrapRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
}); |
|
|
|
//错误不为空并非部分更新,手工回滚
|
|
|
|
if (!errorList.isEmpty() && !updatePart) { |
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
|
|
|
} |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|