|
|
@ -1,45 +1,67 @@ |
|
|
|
package com.win.module.wms.service.supplierdeliverRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.json.JSONArray; |
|
|
|
import cn.hutool.json.JSONObject; |
|
|
|
import cn.hutool.json.JSONUtil; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
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.purchase.vo.*; |
|
|
|
import com.win.module.wms.controller.rule.vo.RuleRespVO; |
|
|
|
import com.win.module.wms.controller.supplierdeliverRequest.vo.*; |
|
|
|
import com.win.module.wms.convert.purchase.PurchaseDetailConvert; |
|
|
|
import com.win.module.wms.convert.purchase.PurchaseMainConvert; |
|
|
|
import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.supplierdeliverRequest.SupplierdeliverRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.shift.ShiftDO; |
|
|
|
import com.win.module.wms.dal.dataobject.stdcostprice.StdcostpriceDO; |
|
|
|
import com.win.module.wms.dal.dataobject.supplier.SupplierDO; |
|
|
|
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; |
|
|
|
import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
import com.win.module.wms.enums.order.OrderStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.purchasePlan.PurchasePlanMainService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
import com.win.module.wms.service.rule.RuleService; |
|
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
|
import com.win.module.wms.service.supplier.SupplierService; |
|
|
|
import com.win.module.wms.service.supplieritem.SupplieritemService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
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.SUPPLIERDELIVER_REQUEST_MAIN_NOT_EXISTS; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* 供应商发货申请主 Service 实现类 |
|
|
@ -68,23 +90,43 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
@Resource |
|
|
|
private SupplierService supplierService; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private RuleService ruleService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createSupplierdeliverRequestMain(SupplierdeliverRequestMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
SupplierdeliverRequestMainDO supplierdeliverRequestMain = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
supplierdeliverRequestMainMapper.insert(supplierdeliverRequestMain); |
|
|
|
// 返回
|
|
|
|
return supplierdeliverRequestMain.getId(); |
|
|
|
// 插入主表
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest"); |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
createReqVO.setCreateTime(LocalDateTime.now()); |
|
|
|
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorToCreate(createReqVO); |
|
|
|
//调用自动执行方法
|
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(supplierdeliverRequestMainDO.getStatus())) { |
|
|
|
} |
|
|
|
trendsApi.createTrends(supplierdeliverRequestMainDO.getId(), "PurchaseOrder", "增加了采购订单", TrendsTypeEnum.CREATE); |
|
|
|
return supplierdeliverRequestMainDO.getId(); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateSupplierdeliverRequestMain(SupplierdeliverRequestMainUpdateReqVO updateReqVO) { |
|
|
|
// 校验存在
|
|
|
|
public Long updateSupplierdeliverRequestMain(SupplierdeliverRequestMainUpdateReqVO updateReqVO) { |
|
|
|
// 校验存在,如子表需要也再此校验
|
|
|
|
validateSupplierdeliverRequestMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
SupplierdeliverRequestMainDO updateObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
supplierdeliverRequestMainMapper.updateById(updateObj); |
|
|
|
// 更新主表
|
|
|
|
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorToUpdate(updateReqVO); |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(supplierdeliverRequestMainDO.getStatus())) { |
|
|
|
} |
|
|
|
trendsApi.createTrends(supplierdeliverRequestMainDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE); |
|
|
|
return supplierdeliverRequestMainDO.getId(); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -116,6 +158,7 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq |
|
|
|
return supplierdeliverRequestMainMapper.selectBatchIds(ids); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<SupplierdeliverRequestMainDO> getSupplierdeliverRequestMainPage(SupplierdeliverRequestMainPageReqVO pageReqVO) { |
|
|
|
return supplierdeliverRequestMainMapper.selectPage(pageReqVO); |
|
|
@ -132,122 +175,192 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq |
|
|
|
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
|
} |
|
|
|
List<SupplierdeliverRequestMainImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
|
|
|
|
String messageMain = ""; |
|
|
|
//主表的验证
|
|
|
|
//校验供应商基础信息
|
|
|
|
try { |
|
|
|
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode()); |
|
|
|
BeanUtils.copyProperties(createReqVO, shiftDO); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
|
|
|
|
//校验供应商送货策略
|
|
|
|
// try {
|
|
|
|
// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null);
|
|
|
|
// String json = ruleRespVO.getConfiguration();
|
|
|
|
// } catch (ServiceException ex) {
|
|
|
|
// importRemark += ex.getMessage() + ",";
|
|
|
|
// }
|
|
|
|
//子表的验证
|
|
|
|
for (SupplierdeliverRequestMainCreateReqVO createReqVO : datas) { |
|
|
|
SupplierdeliverRequestMainDO mainDo = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = validatorSupplierdeliverRequestMainImport(mainDo); |
|
|
|
List<SupplierdeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验物品基础信息
|
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(supplierdeliverRequestDetailDO.getItemCode()); |
|
|
|
if (itembasicDO.getUom() != supplierdeliverRequestDetailDO.getUom()) { |
|
|
|
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + supplierdeliverRequestDetailDO.getUom() + ","; |
|
|
|
} |
|
|
|
supplierdeliverRequestDetailDO.setProjectCode(itembasicDO.getCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (SupplierdeliverRequestDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = validatorSupplierdeliverRequestDetailImport(detailDO, mainDo); |
|
|
|
if (!messageMain.isEmpty() || messageDetail.isEmpty()) { |
|
|
|
SupplierdeliverRequestMainImportErrorVO importErrorVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importErrorVO); |
|
|
|
flag = false; |
|
|
|
} |
|
|
|
|
|
|
|
// 校验供应商物品
|
|
|
|
try { |
|
|
|
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), supplierdeliverRequestDetailDO.getItemCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
//写入数据
|
|
|
|
if (flag) { |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
supplierdeliverRequestMainMapper.insert(mainDo); |
|
|
|
for (SupplierdeliverRequestDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
detailDO.setNumber(mainDo.getNumber()); |
|
|
|
} |
|
|
|
supplierdeliverRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
} |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
// 校验要货计划
|
|
|
|
try { |
|
|
|
PurchasePlanDetailDO purchasePlanDetailDO = purchasePlanMainService.selectPurchasePlan(createReqVO.getNumber(), createReqVO.getSupplierCode(), |
|
|
|
supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode()); |
|
|
|
if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(supplierdeliverRequestDetailDO.getQty()) == -1) { |
|
|
|
messageDetail += "供应商发货数量" + supplierdeliverRequestDetailDO.getQty() + "大于订单行" + supplierdeliverRequestDetailDO.getPoLine() + "的未发货数量" + purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty()) + ","; |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
//主表校验 校验班次基础信息
|
|
|
|
private SupplierDO validatorSupplier(String supplierCode) { |
|
|
|
return supplierService.selectSupplier(supplierCode); |
|
|
|
} |
|
|
|
|
|
|
|
SupplierdeliverRequestDetailCreateReqVO supplierdeliverRequestDetailCreateReqVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert1(supplierdeliverRequestDetailDO); |
|
|
|
SupplierdeliverRequestMainImportErrorVO importVO = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO, supplierdeliverRequestDetailCreateReqVO); |
|
|
|
//进行子表的错误统计
|
|
|
|
//主表没有错误 写入库里
|
|
|
|
if (!messageMain.equals("") || !messageDetail.equals("")) { |
|
|
|
importVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importVO); |
|
|
|
} else { |
|
|
|
supplierdeliverRequestDetailDO.setNumber(createReqVO.getNumber()); |
|
|
|
supplierdeliverRequestDetailDO.setMasterId(createReqVO.getId()); |
|
|
|
supplierdeliverRequestDetailDO.setAltBatch(""); |
|
|
|
} |
|
|
|
//主表校验 校验供应商基础信息
|
|
|
|
private RuleRespVO validatordeliverGoods() { |
|
|
|
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, null, null); |
|
|
|
return ruleRespVO; |
|
|
|
} |
|
|
|
|
|
|
|
//子表校验 校验供应商基础信息
|
|
|
|
private void validatorItembasic(String itemCode) { |
|
|
|
itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
//子表校验 校验供应商物品
|
|
|
|
private SupplieritemDO validatorSupplierItemExist(String supplierCode, String itemCode) { |
|
|
|
return supplieritemService.selectSupplierItemExist(supplierCode, itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
//子表校验 校验要货计划
|
|
|
|
private PurchasePlanDetailDO validatorPurchasePlan(SupplierdeliverRequestMainDO supplierdeliverRequestMainDO, SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO) { |
|
|
|
PurchasePlanDetailDO purchasePlanDetailDO = |
|
|
|
purchasePlanMainService.selectPurchasePlan(supplierdeliverRequestMainDO.getPpNumber(), supplierdeliverRequestMainDO.getSupplierCode(), |
|
|
|
supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode()); |
|
|
|
return purchasePlanDetailDO; |
|
|
|
} |
|
|
|
|
|
|
|
//校验主表公共方法(适用于新增/修改)
|
|
|
|
private SupplierdeliverRequestMainDO validatorMainMethod(SupplierdeliverRequestMainBaseVO baseVO) { |
|
|
|
SupplierdeliverRequestMainDO mainDo = SupplierdeliverRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
SupplierDO supplierDO = this.validatorSupplier(mainDo.getSupplierCode()); |
|
|
|
if (supplierDO == null) { |
|
|
|
throw exception(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS); |
|
|
|
} |
|
|
|
RuleRespVO ruleRespVO = validatordeliverGoods(); |
|
|
|
if (ruleRespVO == null) { |
|
|
|
throw new ServiceException(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS); |
|
|
|
} else { |
|
|
|
JSONObject conditionObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); |
|
|
|
mainDo.setToWarehouseCode(String.valueOf(conditionObject.get("WarehouseCode"))); |
|
|
|
mainDo.setToDockCode(String.valueOf(conditionObject.get("DockCode"))); |
|
|
|
mainDo.setTimeWindow(conditionObject.get("BeginTime") + "-" + conditionObject.get("EndTime")); |
|
|
|
} |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
return mainDo; |
|
|
|
} |
|
|
|
|
|
|
|
//校验子表公共方法(适用于新增/修改)
|
|
|
|
private void validatorDetailMethod(SupplierdeliverRequestDetailDO detailDo, SupplierdeliverRequestMainDO mainDo) { |
|
|
|
this.validatorItembasic(detailDo.getItemCode()); |
|
|
|
this.validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); |
|
|
|
PurchasePlanDetailDO purchasePlanDetailDO = this.validatorPurchasePlan(mainDo, detailDo); |
|
|
|
if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(detailDo.getQty()) == -1) { |
|
|
|
throw exception(QTY_ERROR, detailDo.getQty(), null, detailDo.getPoLine(), null, purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//新增校验
|
|
|
|
private SupplierdeliverRequestMainDO validatorToCreate(SupplierdeliverRequestMainCreateReqVO createReqVO) { |
|
|
|
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorMainMethod(createReqVO); |
|
|
|
//子表校验
|
|
|
|
List<SupplierdeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
supplierdeliverRequestMainMapper.insert(supplierdeliverRequestMainDO); |
|
|
|
for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) { |
|
|
|
validatorDetailMethod(supplierdeliverRequestDetailDO, supplierdeliverRequestMainDO); |
|
|
|
supplierdeliverRequestDetailDO.setMasterId(supplierdeliverRequestMainDO.getId()); |
|
|
|
supplierdeliverRequestDetailDO.setNumber(supplierdeliverRequestMainDO.getNumber()); |
|
|
|
} |
|
|
|
supplierdeliverRequestDetailMapper.insertBatch(subDOList); |
|
|
|
return supplierdeliverRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
//修改校验
|
|
|
|
private SupplierdeliverRequestMainDO validatorToUpdate(SupplierdeliverRequestMainUpdateReqVO updateReqVO) { |
|
|
|
SupplierdeliverRequestMainDO supplierdeliverRequestMainDO = validatorMainMethod(updateReqVO); |
|
|
|
//子表校验
|
|
|
|
List<SupplierdeliverRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
|
List<SupplierdeliverRequestDetailDO> subDOList = SupplierdeliverRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
|
for (SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO : subDOList) { |
|
|
|
validatorDetailMethod(supplierdeliverRequestDetailDO, supplierdeliverRequestMainDO); |
|
|
|
} |
|
|
|
supplierdeliverRequestMainMapper.updateById(supplierdeliverRequestMainDO); |
|
|
|
supplierdeliverRequestDetailMapper.updateBatch(subDOList); |
|
|
|
return supplierdeliverRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验主表导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param createReqVO |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorSupplierdeliverRequestMainImport(SupplierdeliverRequestMainDO createReqVO) { |
|
|
|
String messageMain = ""; |
|
|
|
//校验供应商基础信息
|
|
|
|
try { |
|
|
|
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
//校验发货单号是否重复
|
|
|
|
if (!createReqVO.getAsnNumber().isEmpty()) { |
|
|
|
QueryWrapper<SupplierdeliverRequestMainDO> queryWrapper = new QueryWrapper(); |
|
|
|
queryWrapper.eq("asn_number", createReqVO.getAsnNumber()); |
|
|
|
queryWrapper.ne("status", RequestStatusEnum.CLOSED.getCode()); |
|
|
|
List<SupplierdeliverRequestMainDO> supplierdeliverRequestMainDOList = supplierdeliverRequestMainMapper.selectList(queryWrapper); |
|
|
|
if (supplierdeliverRequestMainDOList != null && supplierdeliverRequestMainDOList.size() > 0) { |
|
|
|
messageMain += "发货单" + createReqVO.getAsnNumber() + "已经存在 !" + ","; |
|
|
|
} |
|
|
|
} |
|
|
|
return messageMain; |
|
|
|
} |
|
|
|
|
|
|
|
if (errorList.isEmpty()) { |
|
|
|
// 判断如果不存在,在进行插入
|
|
|
|
SupplierdeliverRequestMainDO existPurchaseclaimRequestMainDO = supplierdeliverRequestMainMapper.selectByNumberAndAsnNumber(createReqVO.getNumber(), createReqVO.getAsnNumber()); |
|
|
|
if (existPurchaseclaimRequestMainDO == null && mode != 3) { |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("SupplierDeliverRequest"); |
|
|
|
if (requestsettingDO != null) { |
|
|
|
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
supplierdeliverRequestMainMapper.insert(createObj); |
|
|
|
supplierdeliverRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) { |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("SupplierDeliverRequest"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("SupplierDeliverRequest"); |
|
|
|
if (requestsettingDO != null) { |
|
|
|
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
SupplierdeliverRequestMainDO createObj = SupplierdeliverRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
supplierdeliverRequestMainMapper.updateById(createObj); |
|
|
|
supplierdeliverRequestDetailMapper.updateBatch(subDOList); |
|
|
|
} |
|
|
|
/** |
|
|
|
* 校验子表导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param supplierdeliverRequestDetailDO |
|
|
|
* @param supplierdeliverRequestMainDO |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorSupplierdeliverRequestDetailImport(SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO, SupplierdeliverRequestMainDO supplierdeliverRequestMainDO) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验物品基础信息
|
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(supplierdeliverRequestDetailDO.getItemCode()); |
|
|
|
if (itembasicDO.getUom() != supplierdeliverRequestDetailDO.getUom()) { |
|
|
|
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + supplierdeliverRequestDetailDO.getUom() + ","; |
|
|
|
} |
|
|
|
}); |
|
|
|
//错误不为空并非部分更新,手工回滚
|
|
|
|
if (!errorList.isEmpty() && !updatePart) { |
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
|
|
|
supplierdeliverRequestDetailDO.setProjectCode(itembasicDO.getCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
return errorList; |
|
|
|
// 校验供应商物品
|
|
|
|
try { |
|
|
|
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(supplierdeliverRequestMainDO.getSupplierCode(), supplierdeliverRequestDetailDO.getItemCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
// 校验要货计划
|
|
|
|
try { |
|
|
|
PurchasePlanDetailDO purchasePlanDetailDO = purchasePlanMainService.selectPurchasePlan(supplierdeliverRequestMainDO.getNumber(), supplierdeliverRequestMainDO.getSupplierCode(), |
|
|
|
supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode()); |
|
|
|
if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(supplierdeliverRequestDetailDO.getQty()) == -1) { |
|
|
|
messageDetail += "供应商发货数量" + supplierdeliverRequestDetailDO.getQty() + "大于订单行" + supplierdeliverRequestDetailDO.getPoLine() + "的未发货数量" + purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty()) + ","; |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
return messageDetail; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|