|
|
@ -1,29 +1,42 @@ |
|
|
|
package com.win.module.wms.service.inspectJob; |
|
|
|
|
|
|
|
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.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.wms.controller.inspectJob.vo.InspectJobMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.inspectJob.vo.InspectJobMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.inspectJob.vo.InspectJobMainRespVO; |
|
|
|
import com.win.module.wms.controller.inspectJob.vo.InspectJobMainUpdateReqVO; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.inspectJob.vo.*; |
|
|
|
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.inspectJob.InspectJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.inspectRecord.InspectRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.inspectRecord.InspectRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; |
|
|
|
import com.win.module.wms.dal.mysql.inspectJob.InspectJobDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.inspectJob.InspectJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.inspectRecord.InspectRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.inspectRecord.InspectRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestMainMapper; |
|
|
|
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 org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
@ -41,9 +54,27 @@ public class InspectJobMainServiceImpl implements InspectJobMainService { |
|
|
|
@Resource |
|
|
|
private InspectJobMainMapper inspectJobMainMapper; |
|
|
|
@Resource |
|
|
|
private InspectJobDetailMapper inspectJobDetailMapper; |
|
|
|
@Resource |
|
|
|
private InspectJobDetailService inspectJobDetailService; |
|
|
|
@Resource |
|
|
|
private InspectRecordMainMapper inspectRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private InspectRecordDetailMapper inspectRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private InspectRequestMainMapper inspectRequestMainMapper; |
|
|
|
@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 InspectJobMainDO getInspectJobMain(Long id) { |
|
|
@ -135,7 +166,87 @@ public class InspectJobMainServiceImpl implements InspectJobMainService { |
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer excuteInspectJobMain(InspectJobMainUpdateReqVO inspectJobMainUpdateReqVO) { |
|
|
|
return 0; |
|
|
|
//查询数据
|
|
|
|
InspectJobMainDO inspectJobMainDO = this.validateInspectJobMainExists(inspectJobMainUpdateReqVO.getId()); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(inspectJobMainDO.getStatus()); |
|
|
|
boolean flag = jobStatusState.execute(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(INSPECT_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
//更新完成信息
|
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
inspectJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
inspectJobMainDO.setCompleteTime(LocalDateTime.now()); |
|
|
|
inspectJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); |
|
|
|
inspectJobMainDO.setCompleteUserName(userRespDTO.getNickname()); |
|
|
|
//更新任务表状态
|
|
|
|
int result = inspectJobMainMapper.updateById(inspectJobMainDO); |
|
|
|
//创建采购收货记录主表
|
|
|
|
InspectRecordMainDO inspectRecordMainDO = new InspectRecordMainDO(); |
|
|
|
BeanUtils.copyProperties(inspectJobMainDO, inspectRecordMainDO); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_RECORD.getCode()); |
|
|
|
inspectRecordMainDO.setNumber(number); |
|
|
|
inspectRecordMainDO.setJobNumber(inspectJobMainDO.getNumber()); |
|
|
|
inspectRecordMainDO.setId(null); |
|
|
|
inspectRecordMainDO.setCreator(null); |
|
|
|
inspectRecordMainDO.setCreateTime(null); |
|
|
|
inspectRecordMainDO.setUpdater(null); |
|
|
|
inspectRecordMainDO.setUpdateTime(null); |
|
|
|
inspectRecordMainMapper.insert(inspectRecordMainDO); |
|
|
|
//库存事务
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
List<InspectJobDetailUpdateReqVO> inspectJobDetailUpdateReqVOList = inspectJobMainUpdateReqVO.getSubList(); |
|
|
|
List<InspectRecordDetailDO> inspectRecordDetailDOList = new ArrayList<>(); |
|
|
|
for(InspectJobDetailUpdateReqVO inspectJobDetailUpdateReqVO : inspectJobDetailUpdateReqVOList) { |
|
|
|
InspectRecordDetailDO inspectRecordDetailDO = new InspectRecordDetailDO(); |
|
|
|
BeanUtils.copyProperties(inspectJobDetailUpdateReqVO, inspectRecordDetailDO); |
|
|
|
inspectRecordDetailDO.setMasterId(inspectRecordMainDO.getId()); |
|
|
|
inspectRecordDetailDO.setNumber(number); |
|
|
|
inspectRecordDetailDO.setJobDetailId(String.valueOf(inspectJobDetailUpdateReqVO.getId())); |
|
|
|
inspectRecordDetailDO.setId(null); |
|
|
|
inspectRecordDetailDO.setCreator(null); |
|
|
|
inspectRecordDetailDO.setCreateTime(null); |
|
|
|
inspectRecordDetailDO.setUpdater(null); |
|
|
|
inspectRecordDetailDO.setUpdateTime(null); |
|
|
|
inspectRecordDetailDOList.add(inspectRecordDetailDO); |
|
|
|
//添加库存事务list
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVO); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectReceiptJob"); |
|
|
|
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(!inspectRecordDetailDOList.isEmpty()) { |
|
|
|
inspectRecordDetailMapper.insertBatch(inspectRecordDetailDOList); |
|
|
|
} |
|
|
|
List<String> typeList = new ArrayList<>(); |
|
|
|
typeList.add(JobStatusEnum.PENDING.getCode()); |
|
|
|
typeList.add(JobStatusEnum.PROCESSING.getCode()); |
|
|
|
Long count = inspectJobMainMapper.selectListCount(typeList, inspectJobMainDO.getRequestNumber()); |
|
|
|
InspectRequestMainDO inspectRequestMainDO = inspectRequestMainMapper.selectByNumber(inspectJobMainDO.getRequestNumber()); |
|
|
|
//申请单下所有任务全部完成
|
|
|
|
if(count == 0) { |
|
|
|
inspectRequestMainDO.setStatus(RequestStatusEnum.COMPLETED.getCode()); |
|
|
|
inspectRequestMainMapper.updateById(inspectRequestMainDO); |
|
|
|
} else if(inspectRequestMainDO.getStatus().equals(RequestStatusEnum.HANDLING.getCode())) {//部分完成
|
|
|
|
inspectRequestMainDO.setStatus(RequestStatusEnum.PARTIAL.getCode()); |
|
|
|
inspectRequestMainMapper.updateById(inspectRequestMainDO); |
|
|
|
} |
|
|
|
//增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
//移除预计入
|
|
|
|
expectinService.deleteExpectinByJobNumber(inspectJobMainDO.getNumber()); |
|
|
|
//变更记录
|
|
|
|
trendsApi.createTrends(inspectJobMainDO.getId(), "inspectJob", "执行了到货检验任务", TrendsTypeEnum.UPDATE); |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
private InspectJobMainDO validateInspectJobMainExists(Long id) { |
|
|
|