|
|
@ -1,12 +1,37 @@ |
|
|
|
package com.win.module.wms.service.repleinshRecord; |
|
|
|
|
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
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.api.user.AdminUserApi; |
|
|
|
import com.win.module.system.api.user.dto.AdminUserRespDTO; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.repleinshRecord.vo.*; |
|
|
|
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; |
|
|
|
import com.win.module.wms.convert.purchasereturnRecord.PurchasereturnRecordDetailConvert; |
|
|
|
import com.win.module.wms.convert.repleinshRecord.RepleinshRecordDetailConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
|
import com.win.module.wms.dal.dataobject.location.LocationDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; |
|
|
|
import com.win.module.wms.dal.mysql.repleinshRecord.RepleinshRecordDetailMapper; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.location.LocationService; |
|
|
|
import com.win.module.wms.service.recordsetting.RecordsettingService; |
|
|
|
import com.win.module.wms.service.transaction.TransactionService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import javax.annotation.Resource; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import com.win.module.wms.dal.dataobject.repleinshRecord.RepleinshRecordMainDO; |
|
|
@ -16,6 +41,7 @@ import com.win.module.wms.convert.repleinshRecord.RepleinshRecordMainConvert; |
|
|
|
import com.win.module.wms.dal.mysql.repleinshRecord.RepleinshRecordMainMapper; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
@ -27,16 +53,125 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
@Validated |
|
|
|
public class RepleinshRecordMainServiceImpl implements RepleinshRecordMainService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private TransactionService transactionService; |
|
|
|
@Resource |
|
|
|
private RepleinshRecordDetailMapper repleinshRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private LocationService locationService; |
|
|
|
@Resource |
|
|
|
private RecordsettingService recordsettingService; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private RepleinshRecordMainMapper repleinshRecordMainMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createRepleinshRecordMain(RepleinshRecordMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
RepleinshRecordMainDO repleinshRecordMain = RepleinshRecordMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
repleinshRecordMainMapper.insert(repleinshRecordMain); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(getLoginUserId()); |
|
|
|
RepleinshRecordMainDO mainDO = RepleinshRecordMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
List<RepleinshRecordDetailDO> subDOList = RepleinshRecordDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_RECORD.getCode()); |
|
|
|
mainDO.setNumber(number); |
|
|
|
mainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId())); |
|
|
|
mainDO.setExecuteTime(LocalDateTime.now()); |
|
|
|
mainDO.setActiveDate(LocalDateTime.now()); |
|
|
|
mainDO.setAvailable("TRUE"); |
|
|
|
// 业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentRecord"); |
|
|
|
mainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
mainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
mainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
mainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
mainDO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
mainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
// 接口类型
|
|
|
|
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("RepleinmentRecord"); |
|
|
|
mainDO.setInterfaceType(recordsettingDO.getInterfaceType()); |
|
|
|
repleinshRecordMainMapper.insert(mainDO); |
|
|
|
//库存事务
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
for (RepleinshRecordDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setMasterId(mainDO.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode()); |
|
|
|
if(locationDOFrom != null) { |
|
|
|
detailDO.setFromAreaCode(locationDOFrom.getAreaCode()); |
|
|
|
detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); |
|
|
|
} else { |
|
|
|
throw exception(LOCATION_NOT_EXISTS); |
|
|
|
} |
|
|
|
LocationDO locationDOTo = locationService.selectLocation(detailDO.getToLocationCode()); |
|
|
|
if(locationDOFrom != null) { |
|
|
|
detailDO.setToAreaCode(locationDOTo.getAreaCode()); |
|
|
|
detailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode()); |
|
|
|
} else { |
|
|
|
throw exception(LOCATION_NOT_EXISTS); |
|
|
|
} |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); |
|
|
|
if (itembasicDO != null) { |
|
|
|
detailDO.setItemName(itembasicDO.getName()); |
|
|
|
detailDO.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
detailDO.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
detailDO.setProjectCode(itembasicDO.getProject()); |
|
|
|
detailDO.setUom(itembasicDO.getUom()); |
|
|
|
} else { |
|
|
|
throw exception(ITEMBASIC_NOT_EXISTS); |
|
|
|
} |
|
|
|
// 库存事务——入
|
|
|
|
TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); |
|
|
|
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); |
|
|
|
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction()); |
|
|
|
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode()); |
|
|
|
transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId())); |
|
|
|
transactionCreateReqVOIn.setBatch(detailDO.getToBatch()); |
|
|
|
transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber()); |
|
|
|
transactionCreateReqVOIn.setInventoryStatus(detailDO.getInventoryStatus()); |
|
|
|
transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode()); |
|
|
|
transactionCreateReqVOIn.setSinglePrice(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVOIn.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode()); |
|
|
|
transactionCreateReqVOIn.setRecordNumber(number); |
|
|
|
transactionCreateReqVOIn.setId(null); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVOIn); |
|
|
|
// 库存事务——出
|
|
|
|
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut); |
|
|
|
transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode()); |
|
|
|
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); |
|
|
|
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); |
|
|
|
transactionCreateReqVOOut.setRecordNumber(number); |
|
|
|
transactionCreateReqVOOut.setInventoryStatus(detailDO.getInventoryStatus()); |
|
|
|
transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId())); |
|
|
|
transactionCreateReqVOOut.setBatch(detailDO.getFromBatch()); |
|
|
|
transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber()); |
|
|
|
transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode()); |
|
|
|
transactionCreateReqVOOut.setSinglePrice(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode()); |
|
|
|
transactionCreateReqVOOut.setId(null); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVOOut); |
|
|
|
} |
|
|
|
repleinshRecordDetailMapper.insertBatch(subDOList); |
|
|
|
//增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
//增加操作记录
|
|
|
|
trendsApi.createTrends(mainDO.getId(), "repleinshRecordMain", "增加了补料记录", TrendsTypeEnum.CREATE); |
|
|
|
// 返回
|
|
|
|
return repleinshRecordMain.getId(); |
|
|
|
return mainDO.getId(); |
|
|
|
} |
|
|
|
@Override |
|
|
|
public PageResult<RepleinshRecordMainDO> getRepleinshRecordMainSenior(CustomConditions conditions) { |
|
|
|