|
|
@ -5,6 +5,8 @@ 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.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.deliverPlan.vo.*; |
|
|
@ -15,10 +17,12 @@ import com.win.module.wms.dal.dataobject.customer.CustomerDO; |
|
|
|
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.sale.SaleDetailDO; |
|
|
|
import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.service.businesstype.BusinesstypeService; |
|
|
|
import com.win.module.wms.service.customer.CustomerService; |
|
|
|
import com.win.module.wms.service.deliverJob.DeliverJobMainService; |
|
|
@ -28,7 +32,6 @@ 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; |
|
|
@ -37,8 +40,7 @@ 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.DELIVER_PLAN_MAIN_NOT_EXISTS; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* 发货计划主 Service 实现类 |
|
|
@ -71,25 +73,34 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { |
|
|
|
private DeliverJobMainService deliverJobMainService; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
DeliverPlanMainDO deliverPlanMain = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
deliverPlanMainMapper.insert(deliverPlanMain); |
|
|
|
// 返回
|
|
|
|
return deliverPlanMain.getId(); |
|
|
|
|
|
|
|
RequestsettingDO requestsettingDO = new RequestsettingDO(); |
|
|
|
DeliverPlanMainDO deliverPlanMainDO = validatorToCreate(createReqVO); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); |
|
|
|
return deliverPlanMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateDeliverPlanMain(DeliverPlanMainUpdateReqVO updateReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = new RequestsettingDO(); |
|
|
|
// 校验存在
|
|
|
|
validateDeliverPlanMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
DeliverPlanMainDO updateObj = DeliverPlanMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
deliverPlanMainMapper.updateById(updateObj); |
|
|
|
DeliverPlanMainDO deliverPlanMainDO = validatorToUpdate(updateReqVO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -134,125 +145,173 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { |
|
|
|
@Override |
|
|
|
public List<DeliverPlanMainImportErrorVO> importDeliverPlanMainList(List<DeliverPlanMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
|
//TODO
|
|
|
|
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
|
} |
|
|
|
List<DeliverPlanMainImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
|
|
|
|
String messageMain = ""; |
|
|
|
//主表的验证
|
|
|
|
//校验客户代码
|
|
|
|
try { |
|
|
|
CustomerDO customerDO = customerService.selectCustomerExist(createReqVO.getCustomerCode()); |
|
|
|
if (customerDO == null) { |
|
|
|
messageMain += "客户代码" + createReqVO.getCustomerCode() + "无效" + ","; |
|
|
|
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); |
|
|
|
DeliverPlanMainDO mainDo = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = validateDeliverPlanMainImport(mainDo, businesstypeDO); |
|
|
|
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (DeliverPlanDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = validateDeliverPlanDetailImport(detailDO, mainDo, businesstypeDO); |
|
|
|
if (!messageMain.isEmpty() || messageDetail.isEmpty()) { |
|
|
|
DeliverPlanMainImportErrorVO importErrorVO = DeliverPlanMainConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importErrorVO); |
|
|
|
flag = false; |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
//校验业务类型相关属性
|
|
|
|
try { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); |
|
|
|
//写入数据
|
|
|
|
if (flag) { |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
deliverPlanMainMapper.insert(mainDo); |
|
|
|
for (DeliverPlanDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setNumber(mainDo.getNumber()); |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
detailDO.setCustomerDockCode(null); |
|
|
|
} |
|
|
|
// createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
|
|
|
|
// createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes());
|
|
|
|
// createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
|
|
|
|
// createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes());
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
deliverPlanDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
}); |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//子表的验证
|
|
|
|
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (DeliverPlanDetailDO purchaseDetailDO : subDOList) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验物品基础信息
|
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); |
|
|
|
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { |
|
|
|
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; |
|
|
|
} else { |
|
|
|
// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
|
|
|
|
// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
|
|
|
|
// purchaseDetailDO.setItemName(itembasicDO.getName());
|
|
|
|
purchaseDetailDO.setProject(itembasicDO.getProject()); |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
/** |
|
|
|
* 主表校验导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validateDeliverPlanMainImport(DeliverPlanMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
|
|
|
|
String messageMain = ""; |
|
|
|
//主表的验证
|
|
|
|
//校验客户代码
|
|
|
|
try { |
|
|
|
CustomerDO customerDO = customerService.selectCustomerExist(mainDo.getCustomerCode()); |
|
|
|
if (customerDO == null) { |
|
|
|
messageMain += "客户代码" + mainDo.getCustomerCode() + "无效" + ","; |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
//校验业务类型相关属性
|
|
|
|
try { |
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
return messageMain; |
|
|
|
} |
|
|
|
|
|
|
|
// 校验物品标包信息
|
|
|
|
try { |
|
|
|
SaleDetailDO saleDetailDO = deliverJobMainService.saleDetailExist(purchaseDetailDO.getSoNumber(), purchaseDetailDO.getSoLine(), purchaseDetailDO.getItemCode()); |
|
|
|
if (saleDetailDO != null) { |
|
|
|
// createReqVO.setBusinessType(saleDetailDO.getCode());
|
|
|
|
} |
|
|
|
// jobUtils.ifInToLocationType(from_location_code,saleDetailDO);
|
|
|
|
// createReqVO.setFromLocationTypes(saleDetailDO.getOutLocationTypes());
|
|
|
|
// createReqVO.setToLocationTypes(saleDetailDO.getInLocationTypes());
|
|
|
|
// createReqVO.setFromAreaCodes(saleDetailDO.getOutAreaCodes());
|
|
|
|
// createReqVO.setToAreaCodes(saleDetailDO.getInAreaCodes());
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
/** |
|
|
|
* 子表校验导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validateDeliverPlanDetailImport(DeliverPlanDetailDO detailDo, DeliverPlanMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验物品基础信息
|
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
|
|
if ( !detailDo.getUom().equals(itembasicDO.getUom())) { |
|
|
|
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
|
|
|
|
// 校验物品标包信息
|
|
|
|
try { |
|
|
|
SaleDetailDO saleDetailDO = deliverJobMainService.saleDetailExist(detailDo.getSoNumber(), detailDo.getSoLine(), detailDo.getItemCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
return messageDetail; |
|
|
|
} |
|
|
|
|
|
|
|
DeliverPlanDetailCreateReqVO purchaseDetailCreateReqVO = DeliverPlanDetailConvert.INSTANCE.convert1(purchaseDetailDO); |
|
|
|
DeliverPlanMainImportErrorVO importVO = DeliverPlanDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); |
|
|
|
//进行子表的错误统计
|
|
|
|
//主表没有错误 写入库里
|
|
|
|
if (!messageMain.equals("") || !messageDetail.equals("")) { |
|
|
|
importVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importVO); |
|
|
|
} else { |
|
|
|
purchaseDetailDO.setNumber(createReqVO.getNumber()); |
|
|
|
purchaseDetailDO.setMasterId(createReqVO.getId()); |
|
|
|
purchaseDetailDO.setCustomerDockCode(null); |
|
|
|
purchaseDetailDO.setNumber(createReqVO.getNumber()); |
|
|
|
} |
|
|
|
} |
|
|
|
//新增方法(主和子)
|
|
|
|
private DeliverPlanMainDO validatorToCreate(DeliverPlanMainCreateReqVO createReqVO) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); |
|
|
|
DeliverPlanMainDO deliverPlanMainDO = validateMainMethod(createReqVO,businesstypeDO); |
|
|
|
//子表校验
|
|
|
|
List<DeliverPlanDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (DeliverPlanDetailDO DeliverPlanDetailDO : subDOList) { |
|
|
|
validateDetailMethod(DeliverPlanDetailDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); |
|
|
|
deliverPlanMainDO.setNumber(number); |
|
|
|
deliverPlanMainMapper.insert(deliverPlanMainDO); |
|
|
|
for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) { |
|
|
|
deliverPlanDetailDO.setNumber(deliverPlanMainDO.getNumber()); |
|
|
|
deliverPlanDetailDO.setMasterId(deliverPlanMainDO.getId()); |
|
|
|
deliverPlanDetailDO.setCustomerDockCode(null); |
|
|
|
} |
|
|
|
deliverPlanDetailMapper.insertBatch(subDOList); |
|
|
|
return deliverPlanMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
if (errorList.isEmpty()) { |
|
|
|
// 判断如果不存在,在进行插入
|
|
|
|
DeliverPlanMainDO existPurchaseclaimRequestMainDO = deliverPlanMainMapper.selectByNumber(createReqVO.getNumber()); |
|
|
|
if (existPurchaseclaimRequestMainDO == null && mode != 3) { |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
createReqVO.setStatus(null); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
deliverPlanMainMapper.insert(createObj); |
|
|
|
deliverPlanDetailMapper.insertBatch(subDOList); |
|
|
|
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) { |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
createReqVO.setStatus(null); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
deliverPlanMainMapper.updateById(createObj); |
|
|
|
deliverPlanDetailMapper.updateBatch(subDOList); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
//错误不为空并非部分更新,手工回滚
|
|
|
|
if (!errorList.isEmpty() && !updatePart) { |
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
|
|
|
//修改方法(主和子)
|
|
|
|
private DeliverPlanMainDO validatorToUpdate(DeliverPlanMainUpdateReqVO updateReqVO) { |
|
|
|
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); |
|
|
|
DeliverPlanMainDO deliverPlanMainDO = validateMainMethod(updateReqVO,businesstypeDO); |
|
|
|
//子表校验
|
|
|
|
List<DeliverPlanDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
|
List<DeliverPlanDetailDO> subDOList = DeliverPlanDetailConvert.INSTANCE.convertList05(subList); |
|
|
|
for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) { |
|
|
|
validateDetailMethod(deliverPlanDetailDO); |
|
|
|
} |
|
|
|
return errorList; |
|
|
|
deliverPlanMainMapper.updateById(deliverPlanMainDO); |
|
|
|
deliverPlanDetailMapper.updateBatch(subDOList); |
|
|
|
return deliverPlanMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
//校验主表公共方法(适用于新增/修改)
|
|
|
|
private DeliverPlanMainDO validateMainMethod(DeliverPlanMainBaseVO baseVO, BusinesstypeDO businesstypeDO){ |
|
|
|
DeliverPlanMainDO deliverPlanMainDO = DeliverPlanMainConvert.INSTANCE.convert(baseVO); |
|
|
|
this.validatorCustomerExist(deliverPlanMainDO.getCustomerCode()); |
|
|
|
deliverPlanMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
return deliverPlanMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
//校验子表公共方法(适用于新增/修改)
|
|
|
|
private void validateDetailMethod(DeliverPlanDetailDO deliverPlanDetailDO) { |
|
|
|
ItembasicDO itembasicDO = this.validatorItembasic(deliverPlanDetailDO.getItemCode()); |
|
|
|
if ( !deliverPlanDetailDO.getUom().equals(itembasicDO.getUom())) { |
|
|
|
throw exception(UOM_ERROR, deliverPlanDetailDO.getUom()); |
|
|
|
} |
|
|
|
this.validatorDetailExist(deliverPlanDetailDO.getSoNumber(), deliverPlanDetailDO.getSoLine(), deliverPlanDetailDO.getItemCode()); |
|
|
|
} |
|
|
|
|
|
|
|
//主表校验客户代码
|
|
|
|
private void validatorCustomerExist(String customerCode) { |
|
|
|
customerService.selectCustomerExist(customerCode); |
|
|
|
} |
|
|
|
//子表校验物品基础信息
|
|
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
//子表校验客户代码
|
|
|
|
private void validatorDetailExist(String soNumber, String soLine, String itemCode) { |
|
|
|
deliverJobMainService.saleDetailExist(soNumber, soLine, itemCode); |
|
|
|
} |
|
|
|
} |
|
|
|