|
|
@ -1,28 +1,55 @@ |
|
|
|
package com.win.module.wms.service.productionreturnJob; |
|
|
|
|
|
|
|
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.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainUpdateReqVO; |
|
|
|
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.expectin.vo.ExpectinCreateReqVO; |
|
|
|
import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.productionreturnJob.vo.*; |
|
|
|
import com.win.module.wms.controller.rule.vo.RuleRespVO; |
|
|
|
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; |
|
|
|
import com.win.module.wms.convert.productionreturnJob.ProductionreturnJobMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.location.LocationDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; |
|
|
|
import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordMainMapper; |
|
|
|
import com.win.module.wms.enums.job.JobStatusState; |
|
|
|
import com.win.module.wms.service.expectin.ExpectinService; |
|
|
|
import com.win.module.wms.service.expectout.ExpectoutService; |
|
|
|
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 org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* 生产退料任务主 Service 实现类 |
|
|
@ -33,6 +60,30 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_JOB_M |
|
|
|
@Validated |
|
|
|
public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMainService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ProductionreturnRecordDetailMapper productionreturnRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private TransactionService transactionService; |
|
|
|
@Resource |
|
|
|
private ExpectinService expectinService; |
|
|
|
@Resource |
|
|
|
private ExpectoutService expectoutService; |
|
|
|
@Resource |
|
|
|
private LocationService locationService; |
|
|
|
@Resource |
|
|
|
private ProductionreturnRecordMainMapper productionreturnRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private RecordsettingService recordsettingService; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private ProductionreturnJobDetailService productionreturnJobDetailService; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private ProductionreturnJobMainMapper productionreturnJobMainMapper; |
|
|
|
|
|
|
@ -62,10 +113,12 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa |
|
|
|
productionreturnJobMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateProductionreturnJobMainExists(Long id) { |
|
|
|
if (productionreturnJobMainMapper.selectById(id) == null) { |
|
|
|
private ProductionreturnJobMainDO validateProductionreturnJobMainExists(Long id) { |
|
|
|
ProductionreturnJobMainDO productionreturnJobMainDO = productionreturnJobMainMapper.selectById(id); |
|
|
|
if (productionreturnJobMainDO == null) { |
|
|
|
throw exception(PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return productionreturnJobMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -78,6 +131,11 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa |
|
|
|
return productionreturnJobMainMapper.selectBatchIds(ids); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<ProductionreturnJobMainDO> getProductionreturnJobMainList(CustomConditions conditions) { |
|
|
|
return productionreturnJobMainMapper.selectSeniorList(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<ProductionreturnJobMainDO> getProductionreturnJobMainPage(ProductionreturnJobMainPageReqVO pageReqVO) { |
|
|
|
return productionreturnJobMainMapper.selectPage(pageReqVO); |
|
|
@ -113,4 +171,190 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa |
|
|
|
map.put("count", l.intValue()); |
|
|
|
return map; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer acceptProductionreturnJobMain(Long id) { |
|
|
|
ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus()); |
|
|
|
if(!jobStatusState.accept()) { |
|
|
|
throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
productionreturnJobMainDO.setAcceptUserId(String.valueOf(userId)); |
|
|
|
productionreturnJobMainDO.setAcceptUserName(userRespDTO.getNickname()); |
|
|
|
productionreturnJobMainDO.setAcceptTime(LocalDateTime.now()); |
|
|
|
trendsApi.createTrends(id, "productionreturnJob", "承接了生产退料任务", TrendsTypeEnum.UPDATE); |
|
|
|
return productionreturnJobMainMapper.updateById(productionreturnJobMainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer abandonProductionreturnJobMain(Long id) { |
|
|
|
ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus()); |
|
|
|
if(!jobStatusState.cancelAccept()) { |
|
|
|
throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
productionreturnJobMainDO.setAcceptUserId(null); |
|
|
|
productionreturnJobMainDO.setAcceptUserName(null); |
|
|
|
productionreturnJobMainDO.setAcceptTime(null); |
|
|
|
trendsApi.createTrends(id, "productionreturnJob", "取消了生产退料任务", TrendsTypeEnum.UPDATE); |
|
|
|
return productionreturnJobMainMapper.updateById(productionreturnJobMainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer closeProductionreturnJobMain(Long id) { |
|
|
|
ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(id); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus()); |
|
|
|
if(!jobStatusState.close()) { |
|
|
|
throw exception(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
trendsApi.createTrends(id, "productionreturnJob", "关闭了生产退料任务", TrendsTypeEnum.UPDATE); |
|
|
|
return productionreturnJobMainMapper.updateById(productionreturnJobMainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public String executeProductionreturnJobMain(ProductionreturnJobMainUpdateReqVO updateReqVO) { |
|
|
|
//查询数据
|
|
|
|
ProductionreturnJobMainDO productionreturnJobMainDO = this.validateProductionreturnJobMainExists(updateReqVO.getId()); |
|
|
|
List<ProductionreturnJobDetailDO> subList = productionreturnJobDetailService.selectList(productionreturnJobMainDO.getId()); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(productionreturnJobMainDO.getStatus()); |
|
|
|
boolean flag = jobStatusState.execute(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTIONRETURN_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
//更新完成信息
|
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
productionreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
productionreturnJobMainDO.setCompleteTime(LocalDateTime.now()); |
|
|
|
productionreturnJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); |
|
|
|
productionreturnJobMainDO.setCompleteUserName(userRespDTO.getNickname()); |
|
|
|
//更新任务表状态
|
|
|
|
int result = productionreturnJobMainMapper.updateById(productionreturnJobMainDO); |
|
|
|
//创建 记录 主表
|
|
|
|
ProductionreturnRecordMainDO productionreturnRecordMainDO = new ProductionreturnRecordMainDO(); |
|
|
|
BeanUtils.copyProperties(productionreturnJobMainDO, productionreturnRecordMainDO); |
|
|
|
productionreturnRecordMainDO.setExecuteTime(LocalDateTime.now()); |
|
|
|
productionreturnRecordMainDO.setActiveDate(LocalDateTime.now()); |
|
|
|
productionreturnRecordMainDO.setAvailable("TRUE"); |
|
|
|
productionreturnRecordMainDO.setRequestNumber(productionreturnJobMainDO.getRequestNumber()); |
|
|
|
productionreturnRecordMainDO.setJobNumber(productionreturnJobMainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RECEIPT_RECORD.getCode()); |
|
|
|
productionreturnRecordMainDO.setNumber(number); |
|
|
|
// 接口类型
|
|
|
|
RecordsettingDO recordsettingDO = recordsettingService.selectRecordsettingExist("ProductionReturnRecord"); |
|
|
|
productionreturnRecordMainDO.setInterfaceType(recordsettingDO.getInterfaceType()); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO ; |
|
|
|
// 判断是合格还是隔离
|
|
|
|
// 合格
|
|
|
|
if (productionreturnJobMainDO.getBusinessType().equals("ReturnToStoreRequest")) { |
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRecord"); |
|
|
|
} else { // 隔离
|
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHoldRecord"); |
|
|
|
} |
|
|
|
productionreturnRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
productionreturnRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
productionreturnRecordMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
productionreturnRecordMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
productionreturnRecordMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
productionreturnRecordMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
productionreturnRecordMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
productionreturnRecordMainDO.setId(null); |
|
|
|
productionreturnRecordMainDO.setCreateTime(null); |
|
|
|
productionreturnRecordMainDO.setCreator(null); |
|
|
|
productionreturnRecordMainDO.setUpdateTime(null); |
|
|
|
productionreturnRecordMainDO.setUpdater(null); |
|
|
|
productionreturnRecordMainMapper.insert(productionreturnRecordMainDO); |
|
|
|
|
|
|
|
// 获取参数中的sublist
|
|
|
|
List<ProductionreturnJobDetailUpdateReqVO> productionreturnJobDetailUpdateReqVOList = updateReqVO.getSubList(); |
|
|
|
//库存事务
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
List<ProductionreturnRecordDetailDO> productionreturnRecordDetailDOList = new ArrayList<>(); |
|
|
|
subList.forEach(subListItem -> { |
|
|
|
productionreturnJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { |
|
|
|
// 匹配任务子表与参数中子表
|
|
|
|
if (DetailUpdateItem.getId().equals(subListItem.getId())) { |
|
|
|
ProductionreturnRecordDetailDO productionreturnRecordDetailDO = new ProductionreturnRecordDetailDO(); |
|
|
|
BeanUtils.copyProperties(subListItem, productionreturnRecordDetailDO); |
|
|
|
productionreturnRecordDetailDO.setFromPackingNumber(subListItem.getPackingNumber()); |
|
|
|
productionreturnRecordDetailDO.setToPackingNumber(DetailUpdateItem.getToPackingNumber()); |
|
|
|
productionreturnRecordDetailDO.setFromBatch(subListItem.getBatch()); |
|
|
|
productionreturnRecordDetailDO.setToBatch(DetailUpdateItem.getToBatch()); |
|
|
|
productionreturnRecordDetailDO.setFromLocationCode(subListItem.getFromLocationCode()); |
|
|
|
productionreturnRecordDetailDO.setToLocationCode(DetailUpdateItem.getToLocationCode()); |
|
|
|
productionreturnRecordDetailDO.setInventoryStatus(DetailUpdateItem.getToInventoryStatus()); |
|
|
|
productionreturnRecordDetailDO.setFromContainerNumber(subListItem.getContainerNumber()); |
|
|
|
productionreturnRecordDetailDO.setToContainerNumber(DetailUpdateItem.getToContainerNumber()); |
|
|
|
productionreturnRecordDetailDO.setQty(DetailUpdateItem.getHandleQty()); |
|
|
|
// 获取库位信息 并赋值
|
|
|
|
LocationDO locationDOFrom = locationService.selectLocation(subListItem.getFromLocationCode()); |
|
|
|
productionreturnRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode()); |
|
|
|
productionreturnRecordDetailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); |
|
|
|
LocationDO locationDOTo = locationService.selectLocation(DetailUpdateItem.getToLocationCode()); |
|
|
|
productionreturnRecordDetailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode()); |
|
|
|
productionreturnRecordDetailDO.setToAreaCode(locationDOTo.getAreaCode()); |
|
|
|
productionreturnRecordDetailDO.setMasterId(productionreturnRecordMainDO.getId()); |
|
|
|
productionreturnRecordDetailDO.setNumber(number); |
|
|
|
productionreturnRecordDetailDOList.add(productionreturnRecordDetailDO); |
|
|
|
//添加库存事务list
|
|
|
|
// 入动作
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVO); |
|
|
|
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); |
|
|
|
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); |
|
|
|
transactionCreateReqVO.setBusinessType(productionreturnRecordMainDO.getBusinessType()); |
|
|
|
transactionCreateReqVO.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode()); |
|
|
|
transactionCreateReqVO.setRecordNumber(number); |
|
|
|
transactionCreateReqVO.setId(null); |
|
|
|
transactionCreateReqVO.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber()); |
|
|
|
transactionCreateReqVO.setBatch(productionreturnRecordDetailDO.getToBatch()); |
|
|
|
transactionCreateReqVO.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber()); |
|
|
|
transactionCreateReqVO.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVO.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode()); |
|
|
|
transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
// 出动作
|
|
|
|
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productionreturnRecordDetailDO, transactionCreateReqVOOut); |
|
|
|
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); |
|
|
|
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); |
|
|
|
transactionCreateReqVOOut.setBusinessType(productionreturnRecordMainDO.getBusinessType()); |
|
|
|
transactionCreateReqVOOut.setOwnerCode(productionreturnRecordDetailDO.getFromOwnerCode()); |
|
|
|
transactionCreateReqVOOut.setRecordNumber(number); |
|
|
|
transactionCreateReqVOOut.setId(null); |
|
|
|
transactionCreateReqVOOut.setPackingNumber(productionreturnRecordDetailDO.getToPackingNumber()); |
|
|
|
transactionCreateReqVOOut.setBatch(productionreturnRecordDetailDO.getToBatch()); |
|
|
|
transactionCreateReqVOOut.setContainerNumber(productionreturnRecordDetailDO.getToContainerNumber()); |
|
|
|
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVOOut.setWarehouseCode(productionreturnRecordMainDO.getToWarehouseCode()); |
|
|
|
transactionCreateReqVO.setLocationCode(productionreturnRecordDetailDO.getToLocationCode()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVOOut); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
productionreturnRecordDetailMapper.insertBatch(productionreturnRecordDetailDOList); |
|
|
|
//增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
//移除预计入
|
|
|
|
expectinService.deleteExpectinByJobNumber(productionreturnJobMainDO.getNumber()); |
|
|
|
//移除预计出
|
|
|
|
expectoutService.deleteExpectoutByJobNumber(productionreturnJobMainDO.getNumber()); |
|
|
|
//变更记录
|
|
|
|
trendsApi.createTrends(productionreturnRecordMainDO.getId(), "productionreturnRecord", "生产退料任务生成记录", TrendsTypeEnum.CREATE); |
|
|
|
return number; |
|
|
|
} |
|
|
|
} |
|
|
|