|
|
@ -9,7 +9,6 @@ import cn.hutool.json.JSONUtil; |
|
|
|
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.dict.DictDataApi; |
|
|
@ -28,8 +27,8 @@ import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRe |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
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.purchasereceiptRecord.PurchasereceiptRecordMainService; |
|
|
@ -92,47 +91,47 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
public Long createInspectRequestMain(InspectRequestMainCreateReqVO createReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); |
|
|
|
InspectRequestMainDO inspectRequestMainDO = this.validatorCreate(createReqVO, businesstypeDO, requestsettingDO); |
|
|
|
InspectRequestMainDO mainDO = this.validatorMain(createReqVO, businesstypeDO, requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<InspectRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<InspectRequestDetailDO> subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (InspectRequestDetailDO detailDO : subDOList) { |
|
|
|
this.validatorDetail(detailDO, mainDO, businesstypeDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_REQUEST.getCode()); |
|
|
|
inspectRequestMainDO.setNumber(number); |
|
|
|
mainDO.setNumber(number); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
inspectRequestMainMapper.insert(mainDO); |
|
|
|
inspectRequestDetailMapper.insertBatch(subDOList); |
|
|
|
//调用自动执行方法
|
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, subDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "InspectRequest", "增加了到货校验申请", TrendsTypeEnum.CREATE); |
|
|
|
return inspectRequestMainDO.getId(); |
|
|
|
return mainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void updateInspectRequestMain(InspectRequestMainUpdateReqVO updateReqVO) { |
|
|
|
public Integer updateInspectRequestMain(InspectRequestMainUpdateReqVO updateReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); |
|
|
|
// 校验存在
|
|
|
|
validateInspectRequestMainExists(updateReqVO.getId()); |
|
|
|
// 更新主表
|
|
|
|
InspectRequestMainDO inspectRequestMainDO = validatorUpdate(updateReqVO, businesstypeDO, requestsettingDO); |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
InspectRequestMainDO mainDO = this.validatorMain(updateReqVO, businesstypeDO, requestsettingDO); |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "InspectRequest", "增加了到货校验申请", TrendsTypeEnum.CREATE); |
|
|
|
// 更新主表
|
|
|
|
return inspectRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void deleteInspectRequestMain(Long id) { |
|
|
|
public Integer deleteInspectRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
validateInspectRequestMainExists(id); |
|
|
|
// 删除
|
|
|
|
inspectRequestMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private InspectRequestMainDO validateInspectRequestMainExists(Long id) { |
|
|
|
InspectRequestMainDO inspectRequestMainDO = inspectRequestMainMapper.selectById(id); |
|
|
|
if (inspectRequestMainDO == null) { |
|
|
|
throw exception(INSPECT_REQUEST_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return inspectRequestMainDO; |
|
|
|
return inspectRequestMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -170,10 +169,10 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
//主表校验方法
|
|
|
|
InspectRequestMainDO mainDO = InspectRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); |
|
|
|
String messageMain = this.validatorInspectRequestMainImport(mainDO, businesstypeDO); |
|
|
|
String messageMain = this.validatorInspectRequestMainImport(mainDO); |
|
|
|
List<InspectRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<InspectRequestDetailDO> subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); |
|
|
|
for (InspectRequestDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = this.validatorInspectRequestDetailImport(detailDO, mainDO, businesstypeDO); |
|
|
|
InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = InspectRequestDetailConvert.INSTANCE.convert1(detailDO); |
|
|
@ -185,12 +184,26 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
errorList.add(importVO); |
|
|
|
} |
|
|
|
} |
|
|
|
mainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
mainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); |
|
|
|
mainDO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
mainDO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
mainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
if (errorList.isEmpty()) { |
|
|
|
InspectRequestMainDO existInspectRequestMainDO = inspectRequestMainMapper.selectPurchaseReceiptNumber(createReqVO.getPurchaseReceiptRecordNumber()); |
|
|
|
if (existInspectRequestMainDO == null && mode != 3) { |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_REQUEST.getCode()); |
|
|
|
mainDO.setNumber(number); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, subDOList); |
|
|
|
} |
|
|
|
inspectRequestMainMapper.insert(mainDO); |
|
|
|
for(InspectRequestDetailDO inspectRequestDetailDO : subDOList) { |
|
|
|
inspectRequestDetailDO.setMasterId(mainDO.getId()); |
|
|
@ -209,6 +222,15 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 生成收货检验任务,不要改动事务传播方式,否则会有事务问题 |
|
|
|
* @param mainDO 收货检验主 |
|
|
|
* @param detailDOList 收货检验子 |
|
|
|
*/ |
|
|
|
private void generateJob(InspectRequestMainDO mainDO, List<InspectRequestDetailDO> detailDOList) { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//判断导入单位是否正确
|
|
|
|
private void ifUomSuccess(String itemUom, String uom) { |
|
|
|
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(uom); |
|
|
@ -309,69 +331,18 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
mainDO.setSampleQty(selectInspectType(mainDO.getReceiveQty(), rule)); |
|
|
|
} |
|
|
|
|
|
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorLocation(String fromLocationCode) { |
|
|
|
locationService.selectLocation(fromLocationCode); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifInType(itemType, businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorIfOutInventoryStatuses(String inventoryStatus, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifOutInventoryStatuses(inventoryStatus, businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorIfInFromLocationType(String fromLocationCode, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifInFromLocationType(fromLocationCode, businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorLocationReturnManagementAccuracy(String itemCode, String packingNumber, String batch, String fromLocationCode, String inventoryStatu) { |
|
|
|
ArrayList<String> inventoryStatus = new ArrayList<>(); |
|
|
|
inventoryStatus.add(inventoryStatu); |
|
|
|
jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber, batch, fromLocationCode, inventoryStatus); |
|
|
|
} |
|
|
|
|
|
|
|
// 新增校验
|
|
|
|
private InspectRequestMainDO validatorCreate(InspectRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
InspectRequestMainDO mainDo = validatorMainMethod(createReqVO, businesstypeDO, requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<InspectRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<InspectRequestDetailDO> subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (InspectRequestDetailDO detailDO : subDOList) { |
|
|
|
validatorDetailMethod(detailDO, mainDo, businesstypeDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
inspectRequestMainMapper.insert(mainDo); |
|
|
|
inspectRequestDetailMapper.insertBatch(subDOList); |
|
|
|
return mainDo; |
|
|
|
} |
|
|
|
|
|
|
|
//修改校验
|
|
|
|
private InspectRequestMainDO validatorUpdate(InspectRequestMainUpdateReqVO updateReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
InspectRequestMainDO mainDo = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<InspectRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
|
List<InspectRequestDetailDO> subDOList = InspectRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
|
for (InspectRequestDetailDO detailDO : subDOList) { |
|
|
|
validatorDetailMethod(detailDO, mainDo, businesstypeDO); |
|
|
|
private void validateInspectRequestMainExists(Long id) { |
|
|
|
if (inspectRequestMainMapper.selectById(id) == null) { |
|
|
|
throw exception(INSPECT_REQUEST_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
inspectRequestMainMapper.updateById(mainDo); |
|
|
|
inspectRequestDetailMapper.updateBatch(subDOList); |
|
|
|
return mainDo; |
|
|
|
} |
|
|
|
|
|
|
|
//校验主表公共方法(适用于新增/修改)
|
|
|
|
private InspectRequestMainDO validatorMainMethod(InspectRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
private InspectRequestMainDO validatorMain(InspectRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
InspectRequestMainDO mainDo = InspectRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = validatorPurchasereceiptExist(mainDo.getPurchaseReceiptRecordNumber(), mainDo.getPoNumber(), mainDo.getPoLine(), mainDo.getItemCode()); |
|
|
|
PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = this.validatorPurchasereceiptExist(mainDo.getPurchaseReceiptRecordNumber(), mainDo.getPoNumber(), mainDo.getPoLine(), mainDo.getItemCode()); |
|
|
|
mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty()); |
|
|
|
validatorRule(mainDo); |
|
|
|
this.validatorRule(mainDo); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
@ -383,7 +354,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
} |
|
|
|
|
|
|
|
//校验子表公共方法(适用于新增/修改)
|
|
|
|
private void validatorDetailMethod(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
private void validatorDetail(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); |
|
|
|
detailDo.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasicDO.getDesc2()); |
|
|
@ -403,7 +374,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorInspectRequestMainImport(InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
private String validatorInspectRequestMainImport(InspectRequestMainDO mainDo) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
try { |
|
|
|
PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = validatorPurchasereceiptExist(mainDo.getPurchaseReceiptRecordNumber(), mainDo.getPoNumber(), mainDo.getPoLine(), mainDo.getItemCode()); |
|
|
@ -416,22 +387,6 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
if (businesstypeDO == null) { |
|
|
|
message.append("根据业务类型设置未查找到采购退货申请的相关业务类型"); |
|
|
|
} else { |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
} |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); |
|
|
|
if (requestsettingDO == null) { |
|
|
|
message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); |
|
|
|
} else { |
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
@ -495,4 +450,31 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorLocation(String fromLocationCode) { |
|
|
|
locationService.selectLocation(fromLocationCode); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifInType(itemType, businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorIfOutInventoryStatuses(String inventoryStatus, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifOutInventoryStatuses(inventoryStatus, businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorIfInFromLocationType(String fromLocationCode, BusinesstypeDO businesstypeDO) { |
|
|
|
jobUtils.ifInFromLocationType(fromLocationCode, businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorLocationReturnManagementAccuracy(String itemCode, String packingNumber, String batch, String fromLocationCode, String inventoryStatu) { |
|
|
|
ArrayList<String> inventoryStatus = new ArrayList<>(); |
|
|
|
inventoryStatus.add(inventoryStatu); |
|
|
|
jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber, batch, fromLocationCode, inventoryStatus); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|