|
|
@ -1,24 +1,47 @@ |
|
|
|
package com.win.module.wms.service.putawayJob; |
|
|
|
|
|
|
|
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.module.wms.controller.putawayJob.vo.PutawayJobMainCreateReqVO; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
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.putawayJob.vo.PutawayJobDetailUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.putawayJob.vo.PutawayJobMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.putawayJob.vo.PutawayJobMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.putawayJob.vo.PutawayJobMainUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.putawayJob.PutawayJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.putawayRecord.PutawayRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.putawayRecord.PutawayRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; |
|
|
|
import com.win.module.wms.dal.mysql.putawayJob.PutawayJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.putawayRecord.PutawayRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.putawayRecord.PutawayRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.putawayRequest.PutawayRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.job.JobStatusEnum; |
|
|
|
import com.win.module.wms.enums.job.JobStatusState; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.service.expectin.ExpectinService; |
|
|
|
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.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import com.win.module.wms.dal.dataobject.putawayJob.PutawayJobMainDO; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
|
|
|
|
import com.win.module.wms.convert.putawayJob.PutawayJobMainConvert; |
|
|
|
import com.win.module.wms.dal.mysql.putawayJob.PutawayJobMainMapper; |
|
|
|
|
|
|
|
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.*; |
|
|
|
|
|
|
|
/** |
|
|
@ -32,52 +55,35 @@ public class PutawayJobMainServiceImpl implements PutawayJobMainService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private PutawayJobMainMapper putawayJobMainMapper; |
|
|
|
@Resource |
|
|
|
private PutawayRecordMainMapper putawayRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private PutawayRecordDetailMapper putawayRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private PutawayRequestMainMapper putawayRequestMainMapper; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private TransactionService transactionService; |
|
|
|
@Resource |
|
|
|
private ExpectinService expectinService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createPutawayJobMain(PutawayJobMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
PutawayJobMainDO putawayJobMain = PutawayJobMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
putawayJobMainMapper.insert(putawayJobMain); |
|
|
|
// 返回
|
|
|
|
return putawayJobMain.getId(); |
|
|
|
} |
|
|
|
@Override |
|
|
|
public PageResult<PutawayJobMainDO> getPutawayJobMainSenior(CustomConditions conditions) { |
|
|
|
return putawayJobMainMapper.selectSenior(conditions); |
|
|
|
} |
|
|
|
@Override |
|
|
|
public void updatePutawayJobMain(PutawayJobMainUpdateReqVO updateReqVO) { |
|
|
|
// 校验存在
|
|
|
|
validatePutawayJobMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
PutawayJobMainDO updateObj = PutawayJobMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
putawayJobMainMapper.updateById(updateObj); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void deletePutawayJobMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
validatePutawayJobMainExists(id); |
|
|
|
// 删除
|
|
|
|
putawayJobMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatePutawayJobMainExists(Long id) { |
|
|
|
if (putawayJobMainMapper.selectById(id) == null) { |
|
|
|
throw exception(PUTAWAY_JOB_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PutawayJobMainDO getPutawayJobMain(Long id) { |
|
|
|
return putawayJobMainMapper.selectById(id); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<PutawayJobMainDO> getPutawayJobMainList(Collection<Long> ids) { |
|
|
|
return putawayJobMainMapper.selectBatchIds(ids); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<PutawayJobMainDO> getPutawayJobMainPage(PutawayJobMainPageReqVO pageReqVO) { |
|
|
|
return putawayJobMainMapper.selectPage(pageReqVO); |
|
|
@ -87,15 +93,21 @@ public class PutawayJobMainServiceImpl implements PutawayJobMainService { |
|
|
|
public List<PutawayJobMainDO> getPutawayJobMainList(PutawayJobMainExportReqVO exportReqVO) { |
|
|
|
return putawayJobMainMapper.selectList(exportReqVO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<PutawayJobMainDO> getPutawayJobMainList(CustomConditions conditions) { |
|
|
|
return putawayJobMainMapper.selectList(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PutawayJobMainDO putawayJobMainDoStatusRight(String pnumber, String pstatus) { |
|
|
|
QueryWrapper queryWrapper = new QueryWrapper(); |
|
|
|
queryWrapper.eq("number",pnumber); |
|
|
|
queryWrapper.eq("status",pstatus); |
|
|
|
QueryWrapper<PutawayJobMainDO> queryWrapper = new QueryWrapper<>(); |
|
|
|
queryWrapper.eq("number", pnumber); |
|
|
|
queryWrapper.eq("status", pstatus); |
|
|
|
PutawayJobMainDO putawayJobMainDO = putawayJobMainMapper.selectOne(queryWrapper); |
|
|
|
if(putawayJobMainDO != null){ |
|
|
|
if (putawayJobMainDO != null) { |
|
|
|
return putawayJobMainDO; |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
throw exception(CUSTOMERRETURN_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
} |
|
|
@ -108,4 +120,133 @@ public class PutawayJobMainServiceImpl implements PutawayJobMainService { |
|
|
|
map.put("count", l.intValue()); |
|
|
|
return map; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer acceptPutawayJobMain(Long id) { |
|
|
|
PutawayJobMainDO putawayJobMainDO = this.validatePutawayJobMainExists(id); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(putawayJobMainDO.getStatus()); |
|
|
|
if(!jobStatusState.accept()) { |
|
|
|
throw exception(PUTAWAY_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
putawayJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
putawayJobMainDO.setAcceptUserId(String.valueOf(userId)); |
|
|
|
putawayJobMainDO.setAcceptUserName(userRespDTO.getNickname()); |
|
|
|
putawayJobMainDO.setAcceptTime(LocalDateTime.now()); |
|
|
|
trendsApi.createTrends(id, "putawayJob", "承接了上架任务", TrendsTypeEnum.UPDATE); |
|
|
|
return putawayJobMainMapper.updateById(putawayJobMainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer cancelAcceptPutawayJobMain(Long id) { |
|
|
|
PutawayJobMainDO putawayJobMainDO = this.validatePutawayJobMainExists(id); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(putawayJobMainDO.getStatus()); |
|
|
|
if(!jobStatusState.cancelAccept()) { |
|
|
|
throw exception(PUTAWAY_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
putawayJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
putawayJobMainDO.setAcceptUserId(null); |
|
|
|
putawayJobMainDO.setAcceptUserName(null); |
|
|
|
putawayJobMainDO.setAcceptTime(null); |
|
|
|
trendsApi.createTrends(id, "putawayJob", "取消了上架任务", TrendsTypeEnum.UPDATE); |
|
|
|
return putawayJobMainMapper.updateById(putawayJobMainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer executePutawayJobMain(PutawayJobMainUpdateReqVO putawayJobMainUpdateReqVO) { |
|
|
|
//查询数据
|
|
|
|
PutawayJobMainDO putawayJobMainDO = this.validatePutawayJobMainExists(putawayJobMainUpdateReqVO.getId()); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(putawayJobMainDO.getStatus()); |
|
|
|
boolean flag = jobStatusState.execute(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PUTAWAY_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
//更新完成信息
|
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
putawayJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
putawayJobMainDO.setCompleteTime(LocalDateTime.now()); |
|
|
|
putawayJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); |
|
|
|
putawayJobMainDO.setCompleteUserName(userRespDTO.getNickname()); |
|
|
|
//更新任务表状态
|
|
|
|
int result = putawayJobMainMapper.updateById(putawayJobMainDO); |
|
|
|
//创建采购收货记录主表
|
|
|
|
PutawayRecordMainDO putawayRecordMainDO = new PutawayRecordMainDO(); |
|
|
|
BeanUtils.copyProperties(putawayJobMainDO, putawayRecordMainDO); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_RECORD.getCode()); |
|
|
|
putawayRecordMainDO.setNumber(number); |
|
|
|
putawayRecordMainDO.setJobNumber(putawayJobMainDO.getNumber()); |
|
|
|
putawayRecordMainDO.setId(null); |
|
|
|
putawayRecordMainDO.setCreator(null); |
|
|
|
putawayRecordMainDO.setCreateTime(null); |
|
|
|
putawayRecordMainDO.setUpdater(null); |
|
|
|
putawayRecordMainDO.setUpdateTime(null); |
|
|
|
putawayRecordMainMapper.insert(putawayRecordMainDO); |
|
|
|
//库存事务
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
List<PutawayJobDetailUpdateReqVO> putawayJobDetailUpdateReqVOList = putawayJobMainUpdateReqVO.getSubList(); |
|
|
|
List<PutawayRecordDetailDO> putawayRecordDetailDOList = new ArrayList<>(); |
|
|
|
for(PutawayJobDetailUpdateReqVO putawayJobDetailUpdateReqVO : putawayJobDetailUpdateReqVOList) { |
|
|
|
PutawayRecordDetailDO putawayRecordDetailDO = new PutawayRecordDetailDO(); |
|
|
|
BeanUtils.copyProperties(putawayJobDetailUpdateReqVO, putawayRecordDetailDO); |
|
|
|
putawayRecordDetailDO.setMasterId(putawayRecordMainDO.getId()); |
|
|
|
putawayRecordDetailDO.setNumber(number); |
|
|
|
putawayRecordDetailDO.setJobDetailId(String.valueOf(putawayJobDetailUpdateReqVO.getId())); |
|
|
|
putawayRecordDetailDO.setId(null); |
|
|
|
putawayRecordDetailDO.setCreator(null); |
|
|
|
putawayRecordDetailDO.setCreateTime(null); |
|
|
|
putawayRecordDetailDO.setUpdater(null); |
|
|
|
putawayRecordDetailDO.setUpdateTime(null); |
|
|
|
putawayRecordDetailDOList.add(putawayRecordDetailDO); |
|
|
|
//添加库存事务list
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(putawayRecordDetailDO, transactionCreateReqVO); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayJob"); |
|
|
|
transactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); |
|
|
|
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); |
|
|
|
transactionCreateReqVO.setRecordNumber(number); |
|
|
|
transactionCreateReqVO.setId(null); |
|
|
|
//待确定库存事务信息
|
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
} |
|
|
|
if(!putawayRecordDetailDOList.isEmpty()) { |
|
|
|
putawayRecordDetailMapper.insertBatch(putawayRecordDetailDOList); |
|
|
|
} |
|
|
|
List<String> typeList = new ArrayList<>(); |
|
|
|
typeList.add(JobStatusEnum.PENDING.getCode()); |
|
|
|
typeList.add(JobStatusEnum.PROCESSING.getCode()); |
|
|
|
Long count = putawayJobMainMapper.selectListCount(typeList, putawayJobMainDO.getRequestNumber()); |
|
|
|
PutawayRequestMainDO putawayRequestMainDO = putawayRequestMainMapper.selectByNumber(putawayJobMainDO.getRequestNumber()); |
|
|
|
//申请单下所有任务全部完成
|
|
|
|
if(count == 0) { |
|
|
|
putawayRequestMainDO.setStatus(RequestStatusEnum.COMPLETED.getCode()); |
|
|
|
putawayRequestMainMapper.updateById(putawayRequestMainDO); |
|
|
|
} else if(putawayRequestMainDO.getStatus().equals(RequestStatusEnum.HANDLING.getCode())) {//部分完成
|
|
|
|
putawayRequestMainDO.setStatus(RequestStatusEnum.PARTIAL.getCode()); |
|
|
|
putawayRequestMainMapper.updateById(putawayRequestMainDO); |
|
|
|
} |
|
|
|
//增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
//移除预计入
|
|
|
|
expectinService.deleteExpectinByJobNumber(putawayJobMainDO.getNumber()); |
|
|
|
//变更记录
|
|
|
|
trendsApi.createTrends(putawayJobMainDO.getId(), "putawayJob", "执行了上架任务", TrendsTypeEnum.UPDATE); |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
private PutawayJobMainDO validatePutawayJobMainExists(Long id) { |
|
|
|
PutawayJobMainDO putawayJobMainDO = putawayJobMainMapper.selectById(id); |
|
|
|
if (putawayJobMainDO == null) { |
|
|
|
throw exception(INSPECT_JOB_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return putawayJobMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|