Browse Source

盘点申请生成盘点任务。

master
刘忱 2 years ago
parent
commit
6b79f626e0
  1. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countJob/vo/CountJobMainCreateReqVO.java
  2. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobDetailConvert.java
  3. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobMainConvert.java
  4. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java
  5. 93
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countJob/vo/CountJobMainCreateReqVO.java

@ -1,7 +1,12 @@
package com.win.module.wms.controller.countJob.vo; package com.win.module.wms.controller.countJob.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.Valid;
import java.util.List;
@Schema(description = "管理后台 - 盘点任务主创建 Request VO") @Schema(description = "管理后台 - 盘点任务主创建 Request VO")
@Data @Data
@ -9,4 +14,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
@ToString(callSuper = true) @ToString(callSuper = true)
public class CountJobMainCreateReqVO extends CountJobMainBaseVO { public class CountJobMainCreateReqVO extends CountJobMainBaseVO {
@Schema(description = "子表数据")
private List<@Valid CountJobDetailCreateReqVO> subList;
} }

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobDetailConvert.java

@ -1,16 +1,16 @@
package com.win.module.wms.convert.countJob; package com.win.module.wms.convert.countJob;
import java.util.*;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.countJob.vo.CountJobDetailCreateReqVO; import com.win.module.wms.controller.countJob.vo.CountJobDetailCreateReqVO;
import com.win.module.wms.controller.countJob.vo.CountJobDetailExcelVO; import com.win.module.wms.controller.countJob.vo.CountJobDetailExcelVO;
import com.win.module.wms.controller.countJob.vo.CountJobDetailRespVO; import com.win.module.wms.controller.countJob.vo.CountJobDetailRespVO;
import com.win.module.wms.controller.countJob.vo.CountJobDetailUpdateReqVO; import com.win.module.wms.controller.countJob.vo.CountJobDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO;
import java.util.List;
/** /**
* 盘点任务子 Convert * 盘点任务子 Convert
@ -34,4 +34,6 @@ public interface CountJobDetailConvert {
List<CountJobDetailExcelVO> convertList02(List<CountJobDetailDO> list); List<CountJobDetailExcelVO> convertList02(List<CountJobDetailDO> list);
CountJobDetailDO convert(CountRequestDetailDO bean);
} }

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/countJob/CountJobMainConvert.java

@ -7,6 +7,7 @@ import com.win.module.wms.controller.countJob.vo.CountJobMainRespVO;
import com.win.module.wms.controller.countJob.vo.CountJobMainUpdateReqVO; import com.win.module.wms.controller.countJob.vo.CountJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO; import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO;
import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO; import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.mapstruct.Mappings; import org.mapstruct.Mappings;
@ -48,4 +49,6 @@ public interface CountJobMainConvert {
}) })
CountJobMainExcelVO convert(CountJobMainDO mainDO, CountJobDetailDO detailDO); CountJobMainExcelVO convert(CountJobMainDO mainDO, CountJobDetailDO detailDO);
CountJobMainDO convert(CountRequestMainDO bean);
} }

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java

@ -293,13 +293,15 @@ public class CountPlanMainServiceImpl implements CountPlanMainService {
countRequestMainCreateReqVO.setRequestTime(LocalDateTime.now()); countRequestMainCreateReqVO.setRequestTime(LocalDateTime.now());
countRequestMainCreateReqVO.setDueTime(LocalDateTime.now()); countRequestMainCreateReqVO.setDueTime(LocalDateTime.now());
List<CountRequestDetailCreateReqVO> subList = new ArrayList<>(); List<CountRequestDetailCreateReqVO> subList = new ArrayList<>();
for(BalanceDO balanceDO : balanceDOList) { for (int i = 0; i< balanceDOList.size(); i++) {
BalanceDO balanceDO = balanceDOList.get(i);
CountRequestDetailCreateReqVO countRequestDetailCreateReqVO = new CountRequestDetailCreateReqVO(); CountRequestDetailCreateReqVO countRequestDetailCreateReqVO = new CountRequestDetailCreateReqVO();
BeanUtils.copyProperties(balanceDO, countRequestDetailCreateReqVO); BeanUtils.copyProperties(balanceDO, countRequestDetailCreateReqVO);
ItembasicDO itembasicDO = itembasicService.selectItembasic(balanceDO.getItemCode()); ItembasicDO itembasicDO = itembasicService.selectItembasic(balanceDO.getItemCode());
countRequestDetailCreateReqVO.setItemName(itembasicDO.getName()); countRequestDetailCreateReqVO.setItemName(itembasicDO.getName());
countRequestDetailCreateReqVO.setItemDesc1(itembasicDO.getDesc1()); countRequestDetailCreateReqVO.setItemDesc1(itembasicDO.getDesc1());
countRequestDetailCreateReqVO.setItemDesc2(itembasicDO.getDesc2()); countRequestDetailCreateReqVO.setItemDesc2(itembasicDO.getDesc2());
countRequestDetailCreateReqVO.setCountDetailNumber(String.valueOf(i + 1));
subList.add(countRequestDetailCreateReqVO); subList.add(countRequestDetailCreateReqVO);
} }
countRequestMainCreateReqVO.setSubList(subList); countRequestMainCreateReqVO.setSubList(subList);

93
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java

@ -2,6 +2,7 @@ package com.win.module.wms.service.countRequest;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.exceptions.UtilException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException; import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
@ -9,27 +10,38 @@ import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.countJob.vo.CountJobMainCreateReqVO;
import com.win.module.wms.controller.countRecord.vo.CountRecordDetailCreateReqVO; import com.win.module.wms.controller.countRecord.vo.CountRecordDetailCreateReqVO;
import com.win.module.wms.controller.countRecord.vo.CountRecordMainCreateReqVO; import com.win.module.wms.controller.countRecord.vo.CountRecordMainCreateReqVO;
import com.win.module.wms.controller.countRequest.vo.*; import com.win.module.wms.controller.countRequest.vo.*;
import com.win.module.wms.convert.countJob.CountJobDetailConvert;
import com.win.module.wms.convert.countJob.CountJobMainConvert;
import com.win.module.wms.convert.countRecord.CountRecordDetailConvert; import com.win.module.wms.convert.countRecord.CountRecordDetailConvert;
import com.win.module.wms.convert.countRecord.CountRecordMainConvert; import com.win.module.wms.convert.countRecord.CountRecordMainConvert;
import com.win.module.wms.convert.countRequest.CountRequestDetailConvert; import com.win.module.wms.convert.countRequest.CountRequestDetailConvert;
import com.win.module.wms.convert.countRequest.CountRequestMainConvert; import com.win.module.wms.convert.countRequest.CountRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.countJob.CountJobDetailDO;
import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO;
import com.win.module.wms.dal.dataobject.countPlan.CountPlanDetailDO;
import com.win.module.wms.dal.dataobject.countPlan.CountPlanMainDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO; import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.mysql.countJob.CountJobDetailMapper;
import com.win.module.wms.dal.mysql.countJob.CountJobMainMapper; import com.win.module.wms.dal.mysql.countJob.CountJobMainMapper;
import com.win.module.wms.dal.mysql.countPlan.CountPlanDetailMapper;
import com.win.module.wms.dal.mysql.countPlan.CountPlanMainMapper;
import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper; 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.countRecord.CountRecordMainMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestDetailMapper; import com.win.module.wms.dal.mysql.countRequest.CountRequestDetailMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper; import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper;
import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState; import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.countPlan.CountPlanMainService;
import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.jobsetting.JobsettingService;
import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.shift.ShiftService;
@ -42,9 +54,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Objects;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*; import static com.win.module.wms.enums.ErrorCodeConstants.*;
@ -62,6 +72,8 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
@Resource @Resource
private CountRequestDetailMapper countRequestDetailMapper; private CountRequestDetailMapper countRequestDetailMapper;
@Resource @Resource
private CountPlanDetailMapper countPlanDetailMapper;
@Resource
private ShiftService shiftService; private ShiftService shiftService;
@Resource @Resource
private ItembasicService itembasicService; private ItembasicService itembasicService;
@ -72,7 +84,7 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
@Resource @Resource
private LocationService locationService; private LocationService locationService;
@Resource @Resource
private CountPlanMainService countPlanMainService; private CountPlanMainMapper countPlanMainMapper;
@Resource @Resource
private RequestsettingService requestsettingService; private RequestsettingService requestsettingService;
@Resource @Resource
@ -85,13 +97,17 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
private CountRecordMainMapper countRecordMainMapper; private CountRecordMainMapper countRecordMainMapper;
@Resource @Resource
private CountRecordDetailMapper countRecordDetailMapper; private CountRecordDetailMapper countRecordDetailMapper;
@Resource
private JobsettingService jobsettingService;
@Resource
private CountJobDetailMapper countJobDetailMapper;
@Override @Override
@Transactional @Transactional
public Long createCountRequestMain(CountRequestMainCreateReqVO createReqVO) { public Long createCountRequestMain(CountRequestMainCreateReqVO createReqVO) {
// 插入 // 插入
CountRequestMainDO mainDO = CountRequestMainConvert.INSTANCE.convert(createReqVO); CountRequestMainDO mainDO = CountRequestMainConvert.INSTANCE.convert(createReqVO);
countPlanMainService.selectCountPlanExist(mainDO.getPlanNumber()); this.selectCountPlanExist(mainDO.getPlanNumber());
List<CountRequestDetailDO> subDOList = CountRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); List<CountRequestDetailDO> subDOList = CountRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
for (CountRequestDetailDO detailDO : subDOList) { for (CountRequestDetailDO detailDO : subDOList) {
this.validateCountRequestDetailCreate(detailDO); this.validateCountRequestDetailCreate(detailDO);
@ -345,6 +361,47 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
} }
return; return;
} }
//按库位拆分任务
Map<String, List<CountRequestDetailDO>> listMap = new HashMap<>();
for(CountRequestDetailDO detailDO : detailDOList) {
List<CountRequestDetailDO> list = listMap.get(detailDO.getLocationCode());
if(list == null) {
list = new ArrayList<>();
}
//向list增加数据
list.add(detailDO);
listMap.put(detailDO.getLocationCode(), list);
}
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("PurchaseReceiptJob");
//组装任务数据
for(String mapKey : listMap.keySet()) {
List<CountRequestDetailDO> countRequestDetailDOList = listMap.get(mapKey);
CountJobMainDO countJobMainDO = CountJobMainConvert.INSTANCE.convert(mainDO);
countJobMainDO.setRequestNumber(mainDO.getNumber());
countJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
countJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
countJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
countJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
countJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
countJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
countJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
countJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
countJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountJob");
countJobMainDO.setBusinessType(businesstypeDO.getCode());
countJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
countJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
countJobMainMapper.insert(countJobMainDO);
List<CountJobDetailDO> countJobDetailDOList = new ArrayList<>();
for (int i = 0; i< countRequestDetailDOList.size(); i++) {
CountRequestDetailDO countRequestDetailDO = countRequestDetailDOList.get(i);
CountJobDetailDO countJobDetailDO = CountJobDetailConvert.INSTANCE.convert(countRequestDetailDO);
countJobDetailDO.setCountDetailNumber(String.valueOf(i + 1));
countJobDetailDOList.add(countJobDetailDO);
}
countJobDetailMapper.insertBatch(countJobDetailDOList);
}
} }
/** /**
@ -355,7 +412,7 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
private String validateCountRequestMainImport(CountRequestMainDO mainDO) { private String validateCountRequestMainImport(CountRequestMainDO mainDO) {
StringBuilder message = new StringBuilder(); StringBuilder message = new StringBuilder();
try { try {
countPlanMainService.selectCountPlanExist(mainDO.getPlanNumber()); this.selectCountPlanExist(mainDO.getPlanNumber());
} catch (ServiceException e) { } catch (ServiceException e) {
message.append(e.getMessage()).append(","); message.append(e.getMessage()).append(",");
} }
@ -424,4 +481,26 @@ public class CountRequestMainServiceImpl implements CountRequestMainService {
jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstypeDO); jobUtils.ifOutInventoryStatuses(detailDO.getInventoryStatus(), businesstypeDO);
} }
private CountPlanDetailDO selectCountPlanExist(String pnumber){
QueryWrapper<CountPlanMainDO> queryWrapperMain = new QueryWrapper<>();
queryWrapperMain.eq("number",pnumber);
queryWrapperMain.eq("available","TRUE");
CountPlanMainDO countPlanMainDO = countPlanMainMapper.selectOne(queryWrapperMain);
if(countPlanMainDO == null) {
throw new UtilException("盘点计划" + pnumber + "无效");
}
if("ClOSE".equals(countPlanMainDO.getStatus())) {
throw new UtilException("盘点计划" + pnumber + "已关闭");
}
QueryWrapper<CountPlanDetailDO> queryWrapperDetail = new QueryWrapper<>();
queryWrapperDetail.eq("number", pnumber);
queryWrapperDetail.eq("available","TRUE");
CountPlanDetailDO countPlanDetailDO = countPlanDetailMapper.selectOne(queryWrapperDetail);
if(countPlanDetailDO != null) {
return countPlanDetailDO;
} else {
throw new UtilException("盘点计划" + pnumber + "无效");
}
}
} }

Loading…
Cancel
Save