|
@ -1,15 +1,18 @@ |
|
|
package com.win.module.wms.service.inventorychangeRequest; |
|
|
package com.win.module.wms.service.inventorychangeRequest; |
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
import com.win.framework.dict.core.util.DictFrameworkUtils; |
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
|
|
|
import com.win.module.system.api.dept.DeptApi; |
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
|
|
import com.win.module.system.api.user.AdminUserApi; |
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
|
|
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; |
|
|
|
|
|
import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO; |
|
|
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordDetailCreateReqVO; |
|
|
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordDetailCreateReqVO; |
|
|
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainCreateReqVO; |
|
|
import com.win.module.wms.controller.inventorychangeRecord.vo.InventorychangeRecordMainCreateReqVO; |
|
|
import com.win.module.wms.controller.inventorychangeRequest.vo.*; |
|
|
import com.win.module.wms.controller.inventorychangeRequest.vo.*; |
|
@ -19,7 +22,7 @@ import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestD |
|
|
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert; |
|
|
import com.win.module.wms.convert.inventorychangeRequest.InventorychangeRequestMainConvert; |
|
|
import com.win.module.wms.dal.dataobject.balance.BalanceDO; |
|
|
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.businesstype.BusinesstypeDO; |
|
|
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; |
|
|
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; |
|
|
import com.win.module.wms.dal.dataobject.inventorychangeRecord.InventorychangeRecordMainDO; |
|
|
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; |
|
|
import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; |
|
@ -32,15 +35,17 @@ import com.win.module.wms.dal.mysql.inventorychangeRecord.InventorychangeRecordD |
|
|
import com.win.module.wms.dal.mysql.inventorychangeRecord.InventorychangeRecordMainMapper; |
|
|
import com.win.module.wms.dal.mysql.inventorychangeRecord.InventorychangeRecordMainMapper; |
|
|
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper; |
|
|
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper; |
|
|
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper; |
|
|
import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper; |
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
|
|
|
import com.win.module.wms.service.expectin.ExpectinService; |
|
|
|
|
|
import com.win.module.wms.service.expectout.ExpectoutService; |
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
import com.win.module.wms.service.itempackaging.ItempackagingService; |
|
|
import com.win.module.wms.service.itempackaging.ItempackagingService; |
|
|
import com.win.module.wms.service.location.LocationService; |
|
|
import com.win.module.wms.service.location.LocationService; |
|
|
import com.win.module.wms.service.recordsetting.RecordsettingService; |
|
|
import com.win.module.wms.service.recordsetting.RecordsettingService; |
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
|
|
|
import com.win.module.wms.service.transaction.TransactionService; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
@ -48,6 +53,7 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.validation.annotation.Validated; |
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
import javax.annotation.Resource; |
|
|
|
|
|
import javax.validation.Validator; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.Collection; |
|
|
import java.util.Collection; |
|
@ -74,6 +80,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
@Resource |
|
|
@Resource |
|
|
private InventorychangeRecordDetailMapper inventorychangeRecordDetailMapper; |
|
|
private InventorychangeRecordDetailMapper inventorychangeRecordDetailMapper; |
|
|
@Resource |
|
|
@Resource |
|
|
|
|
|
private TransactionService transactionService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ExpectoutService expectoutService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ExpectinService expectinService; |
|
|
|
|
|
@Resource |
|
|
private ItembasicService itembasicService; |
|
|
private ItembasicService itembasicService; |
|
|
@Resource |
|
|
@Resource |
|
|
private ItempackagingService itempackagingService; |
|
|
private ItempackagingService itempackagingService; |
|
@ -93,14 +105,18 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
private BalanceMapper balanceMapper; |
|
|
private BalanceMapper balanceMapper; |
|
|
@Resource |
|
|
@Resource |
|
|
private RecordsettingService recordsettingService; |
|
|
private RecordsettingService recordsettingService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private Validator validator; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private AdminUserApi userApi; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) { |
|
|
public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) { |
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventorychangeRequest"); |
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventorychangeRequest"); |
|
|
InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToCreate(createReqVO); |
|
|
InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToCreate(createReqVO); |
|
|
//调用自动执行方法
|
|
|
//调用自动执行方法
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { |
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { |
|
|
generateRecord(inventorychangeRequestMainDO,inventorychangeRequestDetailMapper.selectList(inventorychangeRequestMainDO.getId())); |
|
|
generateRecord(inventorychangeRequestMainDO, inventorychangeRequestDetailMapper.selectList(inventorychangeRequestMainDO.getId())); |
|
|
} |
|
|
} |
|
|
trendsApi.createTrends(requestsettingDO.getId(), "InventorychangeRequest", "增加了库存修改申请", TrendsTypeEnum.CREATE); |
|
|
trendsApi.createTrends(requestsettingDO.getId(), "InventorychangeRequest", "增加了库存修改申请", TrendsTypeEnum.CREATE); |
|
|
return inventorychangeRequestMainDO.getId(); |
|
|
return inventorychangeRequestMainDO.getId(); |
|
@ -112,7 +128,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
// 校验存在
|
|
|
// 校验存在
|
|
|
validateInventorychangeRequestMainExists(updateReqVO.getId()); |
|
|
validateInventorychangeRequestMainExists(updateReqVO.getId()); |
|
|
InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToUpdate(updateReqVO); |
|
|
InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToUpdate(updateReqVO); |
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { |
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
trendsApi.createTrends(requestsettingDO.getId(), "InventorychangeRequest", "修改了库存修改申请", TrendsTypeEnum.UPDATE); |
|
|
trendsApi.createTrends(requestsettingDO.getId(), "InventorychangeRequest", "修改了库存修改申请", TrendsTypeEnum.UPDATE); |
|
@ -166,8 +182,8 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
boolean flag = requestStatusState.close(); |
|
|
boolean flag = requestStatusState.close(); |
|
|
if(!flag) { |
|
|
if (!flag) { |
|
|
throw new ServiceException(DELIVER_REQUEST_CANNOT_CLOSE); |
|
|
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_CLOSE); |
|
|
} |
|
|
} |
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "关闭了库存修改申请", TrendsTypeEnum.UPDATE); |
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "关闭了库存修改申请", TrendsTypeEnum.UPDATE); |
|
@ -182,8 +198,8 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
if(!flag) { |
|
|
if (!flag) { |
|
|
throw new ServiceException(DELIVER_REQUEST_CANNOT_RE_ADD); |
|
|
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_RE_ADD); |
|
|
} |
|
|
} |
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "打开了库存修改申请", TrendsTypeEnum.UPDATE); |
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "打开了库存修改申请", TrendsTypeEnum.UPDATE); |
|
@ -197,12 +213,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
if(!flag) { |
|
|
if (!flag) { |
|
|
throw new ServiceException(DELIVER_REQUEST_CANNOT_SUBMIT); |
|
|
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_SUBMIT); |
|
|
} |
|
|
} |
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
//调用自动执行方法
|
|
|
//调用自动执行方法
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
this.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId())); |
|
|
this.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId())); |
|
|
} |
|
|
} |
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "提交了库存修改申请", TrendsTypeEnum.UPDATE); |
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "提交了库存修改申请", TrendsTypeEnum.UPDATE); |
|
@ -224,16 +240,16 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
inventorychangeRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); |
|
|
inventorychangeRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); |
|
|
inventorychangeRecordMainCreateReqVO.setActiveDate(mainDO.getCreateTime()); |
|
|
inventorychangeRecordMainCreateReqVO.setActiveDate(mainDO.getCreateTime()); |
|
|
inventorychangeRecordMainCreateReqVO.setAvailable("TRUE"); |
|
|
inventorychangeRecordMainCreateReqVO.setAvailable("TRUE"); |
|
|
String replace = inventorychangeRecordMainCreateReqVO.getBusinessType().replace("Request", "Record"); |
|
|
|
|
|
//增加业务类型
|
|
|
//增加业务类型
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType(replace); |
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("inventorychangeRecord"); |
|
|
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist(replace); |
|
|
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("inventorychangeRecord"); |
|
|
inventorychangeRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
inventorychangeRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
inventorychangeRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
inventorychangeRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
inventorychangeRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
inventorychangeRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
inventorychangeRecordMainCreateReqVO.setInterfaceType(recordsettingDO.getInterfaceType()); |
|
|
inventorychangeRecordMainCreateReqVO.setInterfaceType(recordsettingDO.getInterfaceType()); |
|
|
InventorychangeRecordMainDO convert = InventorychangeRecordMainConvert.INSTANCE.convert(inventorychangeRecordMainCreateReqVO); |
|
|
InventorychangeRecordMainDO convert = InventorychangeRecordMainConvert.INSTANCE.convert(inventorychangeRecordMainCreateReqVO); |
|
|
inventorychangeRecordMainMapper.insert(convert); |
|
|
inventorychangeRecordMainMapper.insert(convert); |
|
|
|
|
|
List<InventorychangeRecordDetailDO> iinventorychangeRecordDetailCreateReqVOlDOList = new ArrayList<>(); |
|
|
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : detailDOList) { |
|
|
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : detailDOList) { |
|
|
InventorychangeRecordDetailCreateReqVO inventorychangeRecordDetailCreateReqVO = new InventorychangeRecordDetailCreateReqVO(); |
|
|
InventorychangeRecordDetailCreateReqVO inventorychangeRecordDetailCreateReqVO = new InventorychangeRecordDetailCreateReqVO(); |
|
|
BeanUtils.copyProperties(inventorychangeRequestDetailDO, inventorychangeRecordDetailCreateReqVO); |
|
|
BeanUtils.copyProperties(inventorychangeRequestDetailDO, inventorychangeRecordDetailCreateReqVO); |
|
@ -242,10 +258,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
inventorychangeRecordDetailCreateReqVO.setMasterId(convert.getId().toString()); |
|
|
inventorychangeRecordDetailCreateReqVO.setMasterId(convert.getId().toString()); |
|
|
ArrayList<String> inventoryStatus = new ArrayList<>(); |
|
|
ArrayList<String> inventoryStatus = new ArrayList<>(); |
|
|
inventoryStatus.add(inventorychangeRequestDetailDO.getFromInventoryStatus()); |
|
|
inventoryStatus.add(inventorychangeRequestDetailDO.getFromInventoryStatus()); |
|
|
validatorLocationReturnManagementAccuracy(mainDO,inventorychangeRequestDetailDO,inventoryStatus,true); |
|
|
validatorLocationReturnManagementAccuracy(mainDO, inventorychangeRequestDetailDO, inventoryStatus); |
|
|
inventorychangeRecordDetailMapper.insert(InventorychangeRecordDetailConvert.INSTANCE.convert(inventorychangeRecordDetailCreateReqVO)); |
|
|
iinventorychangeRecordDetailCreateReqVOlDOList.add(InventorychangeRecordDetailConvert.INSTANCE.convert(inventorychangeRecordDetailCreateReqVO)); |
|
|
trendsApi.createTrends(mainDO.getId(), "InventorychangeRecord", "库存修改申请生成库存修改记录", TrendsTypeEnum.CREATE); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
inventorychangeRecordDetailMapper.insertBatch(iinventorychangeRecordDetailCreateReqVOlDOList); |
|
|
|
|
|
//增加库存事务
|
|
|
|
|
|
trendsApi.createTrends(mainDO.getId(), "InventorychangeRecord", "库存修改申请生成库存修改记录", TrendsTypeEnum.CREATE); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//审批同意
|
|
|
//审批同意
|
|
@ -256,12 +274,12 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
if(!flag) { |
|
|
if (!flag) { |
|
|
throw new ServiceException(DELIVER_REQUEST_CANNOT_AGREE); |
|
|
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_AGREE); |
|
|
} |
|
|
} |
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
//调用自动执行方法
|
|
|
//调用自动执行方法
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
this.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId())); |
|
|
this.generateRecord(mainDO, inventorychangeRequestDetailMapper.selectList(mainDO.getId())); |
|
|
} |
|
|
} |
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "审批同意了库存修改申请", TrendsTypeEnum.UPDATE); |
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "审批同意了库存修改申请", TrendsTypeEnum.UPDATE); |
|
@ -276,8 +294,8 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
boolean flag = requestStatusState.handle(); |
|
|
boolean flag = requestStatusState.handle(); |
|
|
if(!flag) { |
|
|
if (!flag) { |
|
|
throw new ServiceException(DELIVER_REQUEST_CANNOT_HANDLE); |
|
|
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_HANDLE); |
|
|
} |
|
|
} |
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
//调用执行方法
|
|
|
//调用执行方法
|
|
@ -294,8 +312,8 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
InventorychangeRequestMainDO mainDO = validateInventorychangeRequestMainExists(id); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
boolean flag = requestStatusState.refused(); |
|
|
boolean flag = requestStatusState.refused(); |
|
|
if(!flag) { |
|
|
if (!flag) { |
|
|
throw new ServiceException(DELIVER_REQUEST_CANNOT_ABORT); |
|
|
throw new ServiceException(INVENTORYCHANGE_REQUEST_CANNOT_ABORT); |
|
|
} |
|
|
} |
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "审批拒绝了库存修改申请", TrendsTypeEnum.UPDATE); |
|
|
trendsApi.createTrends(id, "inventorychangeRequest", "审批拒绝了库存修改申请", TrendsTypeEnum.UPDATE); |
|
@ -308,7 +326,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, String fromInventoryStatus , String toInventoryStatus ,boolean updatePart) { |
|
|
public List<InventorychangeRequestMainImportErrorVO> importInventorychangeRequestMainList(List<InventorychangeRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
throw exception(INVENTORYCHANGE_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
throw exception(INVENTORYCHANGE_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
} |
|
|
} |
|
@ -321,8 +339,6 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
// 是否有错误数据
|
|
|
// 是否有错误数据
|
|
|
boolean flag = true; |
|
|
boolean flag = true; |
|
|
for (InventorychangeRequestDetailDO detailDO : subDOList) { |
|
|
for (InventorychangeRequestDetailDO detailDO : subDOList) { |
|
|
detailDO.setFromInventoryStatus(fromInventoryStatus); |
|
|
|
|
|
detailDO.setToInventoryStatus(toInventoryStatus); |
|
|
|
|
|
String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo); |
|
|
String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo); |
|
|
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { |
|
|
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { |
|
|
InventorychangeRequestMainImportErrorVO importErrorVO = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
InventorychangeRequestMainImportErrorVO importErrorVO = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); |
|
@ -335,14 +351,23 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
} |
|
|
} |
|
|
//写入数据
|
|
|
//写入数据
|
|
|
if (flag) { |
|
|
if (flag) { |
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventoryChangeRequest"); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
|
|
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); |
|
|
|
|
|
mainDo.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_REQUEST.getCode()); |
|
|
|
|
|
mainDo.setNumber(number); |
|
|
|
|
|
mainDo.setDepartmentCode(userApi.getUser(Long.valueOf(mainDo.getCreator())).getDeptId().toString()); |
|
|
inventorychangeRequestMainMapper.insert(mainDo); |
|
|
inventorychangeRequestMainMapper.insert(mainDo); |
|
|
for (InventorychangeRequestDetailDO detailDO : subDOList) { |
|
|
for (InventorychangeRequestDetailDO detailDO : subDOList) { |
|
|
detailDO.setNumber(mainDo.getNumber()); |
|
|
detailDO.setNumber(mainDo.getNumber()); |
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
|
|
detailDO.setToBatch(detailDO.getFromBatch()); |
|
|
|
|
|
detailDO.setToPackingNumber(detailDO.getFromPackingNumber()); |
|
|
|
|
|
detailDO.setToContainerNumber(detailDO.getFromContainerNumber()); |
|
|
} |
|
|
} |
|
|
//调用自动执行方法
|
|
|
//调用自动执行方法
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { |
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { |
|
|
this.generateRecord(mainDo, subDOList); |
|
|
this.generateRecord(mainDo, subDOList); |
|
|
} |
|
|
} |
|
|
inventorychangeRequestDetailMapper.insertBatch(subDOList); |
|
|
inventorychangeRequestDetailMapper.insertBatch(subDOList); |
|
@ -360,6 +385,11 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo) { |
|
|
private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo) { |
|
|
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
|
|
|
String messageMain = ""; |
|
|
String messageMain = ""; |
|
|
|
|
|
try { |
|
|
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
|
|
} catch (Exception ex) { |
|
|
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
//主表的验证
|
|
|
//主表的验证
|
|
|
return messageMain; |
|
|
return messageMain; |
|
|
} |
|
|
} |
|
@ -373,7 +403,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo) { |
|
|
private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo) { |
|
|
String messageDetail = ""; |
|
|
String messageDetail = ""; |
|
|
ItembasicDO itembasicDO = null; |
|
|
ItembasicDO itembasicDO = null; |
|
|
BusinesstypeDO businesstypeDO; |
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryChangeRequest"); |
|
|
// 校验物品基础信息
|
|
|
// 校验物品基础信息
|
|
|
try { |
|
|
try { |
|
|
itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
|
itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
@ -396,218 +426,49 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
} catch (ServiceException ex) { |
|
|
} catch (ServiceException ex) { |
|
|
messageDetail += ex.getMessage() + ","; |
|
|
messageDetail += ex.getMessage() + ","; |
|
|
} |
|
|
} |
|
|
|
|
|
try { |
|
|
//隔离转合格申请
|
|
|
if (itembasicDO != null) { |
|
|
if ("HOLD".equals(detailDo.getFromInventoryStatus())) { |
|
|
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); |
|
|
// 校验库存余额是否存在
|
|
|
} else { |
|
|
try { |
|
|
messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; |
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
|
|
inventoryStatus.add("HOLD"); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_REQUEST.getCode()); |
|
|
|
|
|
detailDo.setNumber(number); |
|
|
|
|
|
// 校验业务类型
|
|
|
|
|
|
try { |
|
|
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRequest"); |
|
|
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
|
|
try { |
|
|
|
|
|
if (itembasicDO != null){ |
|
|
|
|
|
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); |
|
|
|
|
|
}else { |
|
|
|
|
|
messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; |
|
|
|
|
|
} |
|
|
|
|
|
}catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); |
|
|
|
|
|
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToOkRequest"); |
|
|
|
|
|
if (requestsettingDO != null) { |
|
|
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
|
|
mainDo.setRequestTime(LocalDateTime.now()); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
} |
|
|
} |
|
|
|
|
|
try { |
|
|
//合格转隔离申请
|
|
|
jobUtils.ifInInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); |
|
|
if ("OK".equals(detailDo.getFromInventoryStatus())) { |
|
|
} catch (ServiceException ex) { |
|
|
// 校验库存余额是否存在
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
try { |
|
|
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
|
|
inventoryStatus.add("OK"); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); |
|
|
|
|
|
mainDo.setNumber(number); |
|
|
|
|
|
// 校验业务类型
|
|
|
|
|
|
try { |
|
|
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); |
|
|
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
|
|
try { |
|
|
|
|
|
if (itembasicDO != null){ |
|
|
|
|
|
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); |
|
|
|
|
|
}else { |
|
|
|
|
|
messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; |
|
|
|
|
|
} |
|
|
|
|
|
}catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); |
|
|
|
|
|
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); |
|
|
|
|
|
if (requestsettingDO != null) { |
|
|
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
|
|
} |
|
|
|
|
|
detailDo.setToPackingNumber(null); |
|
|
|
|
|
detailDo.setToBatch(null); |
|
|
|
|
|
detailDo.setToContainerNumber(null); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
try { |
|
|
//隔离转报废申请
|
|
|
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); |
|
|
if ("HOLD".equals(detailDo.getFromInventoryStatus())) { |
|
|
} catch (ServiceException ex) { |
|
|
// 校验库存余额是否存在
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
try { |
|
|
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
|
|
inventoryStatus.add("HOLD"); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); |
|
|
|
|
|
mainDo.setNumber(number); |
|
|
|
|
|
// 校验业务类型
|
|
|
|
|
|
try { |
|
|
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest"); |
|
|
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
|
|
try { |
|
|
|
|
|
if (itembasicDO != null){ |
|
|
|
|
|
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); |
|
|
|
|
|
}else { |
|
|
|
|
|
messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; |
|
|
|
|
|
} |
|
|
|
|
|
}catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); |
|
|
|
|
|
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest"); |
|
|
|
|
|
if (requestsettingDO != null) { |
|
|
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
detailDo.setFromPackingNumber(null); |
|
|
|
|
|
detailDo.setFromBatch(null); |
|
|
|
|
|
detailDo.setFromContainerNumber(null); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
try { |
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventoryChangeRequest"); |
|
|
//报废转隔离申请
|
|
|
|
|
|
if ("SCRAP".equals(detailDo.getFromInventoryStatus())) { |
|
|
|
|
|
// 校验库存余额是否存在
|
|
|
|
|
|
try { |
|
|
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
|
|
inventoryStatus.add("SCRAP"); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode()); |
|
|
|
|
|
mainDo.setNumber(number); |
|
|
|
|
|
// 校验业务类型
|
|
|
|
|
|
try { |
|
|
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest"); |
|
|
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
|
|
try { |
|
|
|
|
|
if (itembasicDO != null){ |
|
|
|
|
|
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); |
|
|
|
|
|
}else { |
|
|
|
|
|
messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; |
|
|
|
|
|
} |
|
|
|
|
|
}catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); |
|
|
|
|
|
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest"); |
|
|
|
|
|
if (requestsettingDO != null) { |
|
|
if (requestsettingDO != null) { |
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
} |
|
|
mainDo.setRequestTime(LocalDateTime.now()); |
|
|
|
|
|
|
|
|
detailDo.setFromPackingNumber(null); |
|
|
|
|
|
detailDo.setFromBatch(null); |
|
|
|
|
|
detailDo.setFromContainerNumber(null); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//合格转报废
|
|
|
|
|
|
if ("Ok".equals(detailDo.getFromInventoryStatus())) { |
|
|
|
|
|
// 校验库存余额是否存在
|
|
|
|
|
|
try { |
|
|
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
|
|
inventoryStatus.add("SCRAP"); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(mainDo,detailDo,inventoryStatus,false); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode()); |
|
|
|
|
|
mainDo.setNumber(number); |
|
|
|
|
|
|
|
|
|
|
|
// 校验业务类型
|
|
|
|
|
|
try { |
|
|
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); |
|
|
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
try { |
|
|
|
|
|
if (itembasicDO != null){ |
|
|
|
|
|
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); |
|
|
|
|
|
}else { |
|
|
|
|
|
messageDetail += "物品基本信息不存在,不能校验物品类型" + ","; |
|
|
|
|
|
} |
|
|
|
|
|
}catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); |
|
|
|
|
|
jobUtils.ifInFromLocationType(detailDo.getLocationCode(), businesstypeDO); |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest"); |
|
|
|
|
|
if (requestsettingDO != null) { |
|
|
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
detailDo.setFromPackingNumber(null); |
|
|
messageDetail += ex.getMessage() + ","; |
|
|
detailDo.setFromBatch(null); |
|
|
} |
|
|
detailDo.setFromContainerNumber(null); |
|
|
try { |
|
|
|
|
|
ArrayList<String> inventoryStatusList = new ArrayList<>(); |
|
|
|
|
|
inventoryStatusList.add(detailDo.getFromInventoryStatus()); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(mainDo, detailDo, inventoryStatusList); |
|
|
|
|
|
} catch (Exception ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
try { |
|
|
|
|
|
ValidationUtils.validate(validator, detailDo); |
|
|
|
|
|
} catch (Exception ex) { |
|
|
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
} |
|
|
} |
|
|
return messageDetail; |
|
|
return messageDetail; |
|
|
} |
|
|
} |
|
@ -620,10 +481,11 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<InventorychangeRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { |
|
|
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { |
|
|
validateDetailMethod(inventorychangeRequestMainDO,inventorychangeRequestDetailDO); |
|
|
validateDetailMethod(inventorychangeRequestMainDO, inventorychangeRequestDetailDO); |
|
|
} |
|
|
} |
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); |
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); |
|
|
inventorychangeRequestMainDO.setNumber(number); |
|
|
inventorychangeRequestMainDO.setNumber(number); |
|
|
|
|
|
inventorychangeRequestMainDO.setDepartmentCode(userApi.getUser(Long.valueOf(inventorychangeRequestMainDO.getCreator())).getDeptId().toString()); |
|
|
inventorychangeRequestMainMapper.insert(inventorychangeRequestMainDO); |
|
|
inventorychangeRequestMainMapper.insert(inventorychangeRequestMainDO); |
|
|
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { |
|
|
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { |
|
|
inventorychangeRequestDetailDO.setNumber(inventorychangeRequestMainDO.getNumber()); |
|
|
inventorychangeRequestDetailDO.setNumber(inventorychangeRequestMainDO.getNumber()); |
|
@ -640,7 +502,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
List<InventorychangeRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
List<InventorychangeRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
List<InventorychangeRequestDetailDO> subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { |
|
|
for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { |
|
|
validateDetailMethod(inventorychangeRequestMainDO,inventorychangeRequestDetailDO); |
|
|
validateDetailMethod(inventorychangeRequestMainDO, inventorychangeRequestDetailDO); |
|
|
} |
|
|
} |
|
|
inventorychangeRequestMainMapper.updateById(inventorychangeRequestMainDO); |
|
|
inventorychangeRequestMainMapper.updateById(inventorychangeRequestMainDO); |
|
|
inventorychangeRequestDetailMapper.updateBatch(subDOList); |
|
|
inventorychangeRequestDetailMapper.updateBatch(subDOList); |
|
@ -655,7 +517,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//校验子表公共方法(适用于新增/修改)
|
|
|
//校验子表公共方法(适用于新增/修改)
|
|
|
private void validateDetailMethod(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO) { |
|
|
private void validateDetailMethod(InventorychangeRequestMainDO inventorychangeRequestMainDO, InventorychangeRequestDetailDO inventorychangeRequestDetailDO) { |
|
|
ItembasicDO itembasicDO = this.validatorItembasic(inventorychangeRequestDetailDO.getItemCode()); |
|
|
ItembasicDO itembasicDO = this.validatorItembasic(inventorychangeRequestDetailDO.getItemCode()); |
|
|
if (!inventorychangeRequestDetailDO.getUom().equals(itembasicDO.getUom())) { |
|
|
if (!inventorychangeRequestDetailDO.getUom().equals(itembasicDO.getUom())) { |
|
|
throw exception(UOM_ERROR, inventorychangeRequestDetailDO.getUom()); |
|
|
throw exception(UOM_ERROR, inventorychangeRequestDetailDO.getUom()); |
|
@ -674,61 +536,36 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
} |
|
|
} |
|
|
//校验库存余额是否存在
|
|
|
//校验库存余额是否存在
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
//隔离转合格申请
|
|
|
inventoryStatus.add(inventorychangeRequestDetailDO.getFromInventoryStatus()); |
|
|
if ("HOLD".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "OK".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { |
|
|
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO, inventorychangeRequestDetailDO, itembasicDO); |
|
|
inventoryStatus.add("HOLD"); |
|
|
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO, inventorychangeRequestDetailDO, inventoryStatus); |
|
|
String OkToScrapRequest = "HoldToOkRequest"; |
|
|
inventorychangeRequestDetailDO.setToBatch(inventorychangeRequestDetailDO.getFromBatch()); |
|
|
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); |
|
|
inventorychangeRequestDetailDO.setToPackingNumber(inventorychangeRequestDetailDO.getFromPackingNumber()); |
|
|
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); |
|
|
inventorychangeRequestDetailDO.setToContainerNumber(inventorychangeRequestDetailDO.getFromContainerNumber()); |
|
|
} |
|
|
|
|
|
//合格转隔离申请
|
|
|
|
|
|
if ("OK".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { |
|
|
|
|
|
inventoryStatus.add("OK"); |
|
|
|
|
|
String OkToScrapRequest = "OkToHoldRequest"; |
|
|
|
|
|
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); |
|
|
|
|
|
} |
|
|
|
|
|
//隔离转报废申请
|
|
|
|
|
|
if ("HOLD".equals(inventorychangeRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { |
|
|
|
|
|
inventoryStatus.add("HOLD"); |
|
|
|
|
|
String OkToScrapRequest = "HoldToScrapRequest"; |
|
|
|
|
|
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); |
|
|
|
|
|
} |
|
|
|
|
|
//报废转隔离申请
|
|
|
|
|
|
if ("SCRAP".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { |
|
|
|
|
|
inventoryStatus.add("SCRAP"); |
|
|
|
|
|
String OkToScrapRequest = "ScrapToHoldRequest"; |
|
|
|
|
|
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); |
|
|
|
|
|
} |
|
|
|
|
|
//合格转报废申请
|
|
|
|
|
|
if ("OK".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorychangeRequestDetailDO.getToInventoryStatus())) { |
|
|
|
|
|
inventoryStatus.add("SCRAP"); |
|
|
|
|
|
String OkToScrapRequest = "OkToScrapRequest"; |
|
|
|
|
|
CreateBusinessTypeAndRequestSetting(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,itembasicDO,OkToScrapRequest); |
|
|
|
|
|
validatorLocationReturnManagementAccuracy(inventorychangeRequestMainDO,inventorychangeRequestDetailDO,inventoryStatus,false); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//子表校验来源库位基础信息
|
|
|
//子表校验来源库位基础信息
|
|
|
private void CreateBusinessTypeAndRequestSetting(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO, ItembasicDO itembasicDO, String businesstypeCode) { |
|
|
private void CreateBusinessTypeAndRequestSetting(InventorychangeRequestMainDO inventorychangeRequestMainDO, InventorychangeRequestDetailDO inventorychangeRequestDetailDO, ItembasicDO itembasicDO) { |
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType(businesstypeCode); |
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryChangeRequest"); |
|
|
inventorychangeRequestMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
inventorychangeRequestMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
if (itembasicDO != null){ |
|
|
if (itembasicDO != null) { |
|
|
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); |
|
|
jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); |
|
|
} |
|
|
} |
|
|
jobUtils.ifOutInventoryStatuses(inventorychangeRequestDetailDO.getFromInventoryStatus(), businesstypeDO); |
|
|
jobUtils.ifOutInventoryStatuses(inventorychangeRequestDetailDO.getToInventoryStatus(), businesstypeDO); |
|
|
jobUtils.ifInFromLocationType(inventorychangeRequestDetailDO.getLocationCode(), businesstypeDO); |
|
|
jobUtils.ifInFromLocationType(inventorychangeRequestDetailDO.getLocationCode(), businesstypeDO); |
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist(businesstypeCode); |
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventoryChangeRequest"); |
|
|
if (requestsettingDO != null) { |
|
|
if (requestsettingDO != null) { |
|
|
inventorychangeRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
inventorychangeRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
inventorychangeRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
inventorychangeRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
inventorychangeRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
inventorychangeRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
inventorychangeRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
inventorychangeRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
inventorychangeRequestMainDO.setRequestTime(LocalDateTime.now()); |
|
|
inventorychangeRequestMainDO.setRequestTime(LocalDateTime.now()); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
|
|
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); |
|
|
|
|
|
inventorychangeRequestMainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//子表校验来源库位基础信息
|
|
|
//子表校验来源库位基础信息
|
|
|
private LocationDO validatorLocation(String locationCode) { |
|
|
private LocationDO validatorLocation(String locationCode) { |
|
|
LocationDO locationDO = locationService.selectLocation(locationCode); |
|
|
LocationDO locationDO = locationService.selectLocation(locationCode); |
|
@ -740,7 +577,7 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void validatorLocationReturnManagementAccuracy(InventorychangeRequestMainDO inventorychangeRequestMainDO,InventorychangeRequestDetailDO inventorychangeRequestDetailDO,List<String> inventoryStatus,Boolean flag) { |
|
|
private void validatorLocationReturnManagementAccuracy(InventorychangeRequestMainDO inventorychangeRequestMainDO, InventorychangeRequestDetailDO inventorychangeRequestDetailDO, List<String> inventoryStatus) { |
|
|
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber() |
|
|
List<BalanceDO> balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber() |
|
|
, inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus); |
|
|
, inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus); |
|
|
if (balanceDOList != null) { |
|
|
if (balanceDOList != null) { |
|
@ -755,12 +592,9 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq |
|
|
inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); |
|
|
inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); |
|
|
inventorychangeRequestDetailDO.setToProduceDate(balanceDO.getProduceDate()); |
|
|
inventorychangeRequestDetailDO.setToProduceDate(balanceDO.getProduceDate()); |
|
|
inventorychangeRequestDetailDO.setToExpireDate(balanceDO.getExpireDate()); |
|
|
inventorychangeRequestDetailDO.setToExpireDate(balanceDO.getExpireDate()); |
|
|
if(flag == true){ |
|
|
// balanceDO.setInventoryStatus(inventorychangeRequestDetailDO.getToInventoryStatus());
|
|
|
balanceDO.setInventoryStatus(inventorychangeRequestDetailDO.getToInventoryStatus()); |
|
|
// balanceMapper.updateById(balanceDO);
|
|
|
balanceMapper.updateById(balanceDO); |
|
|
// trendsApi.createTrends(Long.valueOf(balanceDO.getId()), "transaction_balance", "库存修改申请生成库存修改记录时修改了库存余额库存状态", TrendsTypeEnum.UPDATE);
|
|
|
trendsApi.createTrends(Long.valueOf(balanceDO.getId()), "transaction_balance", "库存修改申请生成库存修改记录时修改了库存余额库存状态", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|