|
|
@ -1,27 +1,41 @@ |
|
|
|
package com.win.module.wms.service.countJob; |
|
|
|
|
|
|
|
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.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.countJob.vo.CountJobDetailUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.countJob.vo.CountJobMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.countJob.vo.CountJobMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.countJob.vo.CountJobMainUpdateReqVO; |
|
|
|
import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.countRecord.CountRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.countRecord.CountRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestMainDO; |
|
|
|
import com.win.module.wms.dal.mysql.countJob.CountJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countRecord.CountRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestMainMapper; |
|
|
|
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 org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
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; |
|
|
@ -39,9 +53,21 @@ public class CountJobMainServiceImpl implements CountJobMainService { |
|
|
|
@Resource |
|
|
|
private CountJobMainMapper countJobMainMapper; |
|
|
|
@Resource |
|
|
|
private CountRecordMainMapper countRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private CountRecordDetailMapper countRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private CountRequestMainMapper countRequestMainMapper; |
|
|
|
@Resource |
|
|
|
private CountadjustRequestMainMapper countadjustRequestMainMapper; |
|
|
|
@Resource |
|
|
|
private CountadjustRequestDetailMapper countadjustRequestDetailMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
public CountJobMainDO getCountJobMain(Long id) { |
|
|
@ -123,7 +149,104 @@ public class CountJobMainServiceImpl implements CountJobMainService { |
|
|
|
|
|
|
|
@Override |
|
|
|
public String executeCountJobMain(CountJobMainUpdateReqVO countJobMainUpdateReqVO) { |
|
|
|
return null; |
|
|
|
//查询数据
|
|
|
|
CountJobMainDO countJobMainDO = this.validateCountJobMainExists(countJobMainUpdateReqVO.getId()); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(countJobMainDO.getStatus()); |
|
|
|
boolean flag = jobStatusState.execute(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(INSPECT_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
//更新完成信息
|
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
countJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
countJobMainDO.setCompleteTime(LocalDateTime.now()); |
|
|
|
countJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); |
|
|
|
countJobMainDO.setCompleteUserName(userRespDTO.getNickname()); |
|
|
|
//更新任务表状态
|
|
|
|
countJobMainMapper.updateById(countJobMainDO); |
|
|
|
//创建采购收货记录主表
|
|
|
|
CountRecordMainDO countRecordMainDO = new CountRecordMainDO(); |
|
|
|
BeanUtils.copyProperties(countJobMainDO, countRecordMainDO); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.COUNT_RECORD.getCode()); |
|
|
|
countRecordMainDO.setNumber(number); |
|
|
|
countRecordMainDO.setJobNumber(countJobMainDO.getNumber()); |
|
|
|
countRecordMainDO.setId(null); |
|
|
|
countRecordMainDO.setCreator(null); |
|
|
|
countRecordMainDO.setCreateTime(null); |
|
|
|
countRecordMainDO.setUpdater(null); |
|
|
|
countRecordMainDO.setUpdateTime(null); |
|
|
|
countRecordMainMapper.insert(countRecordMainDO); |
|
|
|
List<CountJobDetailUpdateReqVO> countJobDetailUpdateReqVOList = countJobMainUpdateReqVO.getSubList(); |
|
|
|
List<CountadjustRequestDetailDO> countadjustRequestDetailDOList = new ArrayList<>(); |
|
|
|
List<CountRecordDetailDO> countRecordDetailDOList = new ArrayList<>(); |
|
|
|
int countDetailNumber = 1; |
|
|
|
for(CountJobDetailUpdateReqVO countJobDetailUpdateReqVO : countJobDetailUpdateReqVOList) { |
|
|
|
CountRecordDetailDO countRecordDetailDO = new CountRecordDetailDO(); |
|
|
|
BeanUtils.copyProperties(countJobDetailUpdateReqVO, countRecordDetailDO); |
|
|
|
countRecordDetailDO.setMasterId(countRecordMainDO.getId()); |
|
|
|
countRecordDetailDO.setNumber(number); |
|
|
|
countRecordDetailDO.setJobDetailId(String.valueOf(countJobDetailUpdateReqVO.getId())); |
|
|
|
countRecordDetailDO.setId(null); |
|
|
|
countRecordDetailDO.setCreator(null); |
|
|
|
countRecordDetailDO.setCreateTime(null); |
|
|
|
countRecordDetailDO.setUpdater(null); |
|
|
|
countRecordDetailDO.setUpdateTime(null); |
|
|
|
countRecordDetailDOList.add(countRecordDetailDO); |
|
|
|
//盘点记录数量不一致时生成盘点调整申请
|
|
|
|
if(countRecordDetailDO.getCountQty().compareTo(countRecordDetailDO.getQty()) != 0) { |
|
|
|
CountadjustRequestDetailDO countadjustRequestDetailDO = new CountadjustRequestDetailDO(); |
|
|
|
BeanUtils.copyProperties(countRecordDetailDO, countadjustRequestDetailDO); |
|
|
|
countadjustRequestDetailDO.setCountDetailNumber(String.valueOf(countDetailNumber)); |
|
|
|
countadjustRequestDetailDO.setInventoryQty(countRecordDetailDO.getQty()); |
|
|
|
countadjustRequestDetailDO.setCountQty(countRecordDetailDO.getCountQty()); |
|
|
|
//库存数量减盘点数量等于调整数量
|
|
|
|
countadjustRequestDetailDO.setAdjustQty(countRecordDetailDO.getQty().subtract(countRecordDetailDO.getCountQty())); |
|
|
|
//调整数量的绝对值
|
|
|
|
countadjustRequestDetailDO.setQty(countadjustRequestDetailDO.getAdjustQty().abs()); |
|
|
|
countadjustRequestDetailDO.setId(null); |
|
|
|
countadjustRequestDetailDO.setCreator(null); |
|
|
|
countadjustRequestDetailDO.setCreateTime(null); |
|
|
|
countadjustRequestDetailDO.setUpdater(null); |
|
|
|
countadjustRequestDetailDO.setUpdateTime(null); |
|
|
|
countadjustRequestDetailDOList.add(countadjustRequestDetailDO); |
|
|
|
countDetailNumber++; |
|
|
|
} |
|
|
|
} |
|
|
|
countRecordDetailMapper.insertBatch(countRecordDetailDOList); |
|
|
|
//增加库存跳转
|
|
|
|
if(!countadjustRequestDetailDOList.isEmpty()) { |
|
|
|
CountadjustRequestMainDO countadjustRequestMainDO = new CountadjustRequestMainDO(); |
|
|
|
BeanUtils.copyProperties(countRecordMainDO, countadjustRequestMainDO); |
|
|
|
String adjustNumber = serialNumberApi.generateCode(RuleCodeEnum.COUNT_ADJUST_REQUEST.getCode()); |
|
|
|
countadjustRequestMainDO.setNumber(adjustNumber); |
|
|
|
countadjustRequestMainDO.setCountRecordNumber(number); |
|
|
|
countadjustRequestMainDO.setId(null); |
|
|
|
countadjustRequestMainDO.setCreator(null); |
|
|
|
countadjustRequestMainDO.setCreateTime(null); |
|
|
|
countadjustRequestMainDO.setUpdater(null); |
|
|
|
countadjustRequestMainDO.setUpdateTime(null); |
|
|
|
countadjustRequestMainMapper.insert(countadjustRequestMainDO); |
|
|
|
for(CountadjustRequestDetailDO countadjustRequestDetailDO : countadjustRequestDetailDOList) { |
|
|
|
countadjustRequestDetailDO.setMasterId(countadjustRequestMainDO.getId()); |
|
|
|
countadjustRequestDetailDO.setNumber(adjustNumber); |
|
|
|
} |
|
|
|
countadjustRequestDetailMapper.insertBatch(countadjustRequestDetailDOList); |
|
|
|
} |
|
|
|
List<String> typeList = new ArrayList<>(); |
|
|
|
typeList.add(JobStatusEnum.PENDING.getCode()); |
|
|
|
typeList.add(JobStatusEnum.PROCESSING.getCode()); |
|
|
|
Long count = countJobMainMapper.selectListCount(typeList, countJobMainDO.getRequestNumber()); |
|
|
|
CountRequestMainDO countRequestMainDO = countRequestMainMapper.selectByNumber(countJobMainDO.getRequestNumber()); |
|
|
|
//申请单下所有任务全部完成
|
|
|
|
if(count == 0) { |
|
|
|
countRequestMainDO.setStatus(RequestStatusEnum.COMPLETED.getCode()); |
|
|
|
countRequestMainMapper.updateById(countRequestMainDO); |
|
|
|
} else if(countRequestMainDO.getStatus().equals(RequestStatusEnum.HANDLING.getCode())) {//部分完成
|
|
|
|
countRequestMainDO.setStatus(RequestStatusEnum.PARTIAL.getCode()); |
|
|
|
countRequestMainMapper.updateById(countRequestMainDO); |
|
|
|
} |
|
|
|
return number; |
|
|
|
} |
|
|
|
|
|
|
|
private CountJobMainDO validateCountJobMainExists(Long id) { |
|
|
|