|
@ -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 + "无效"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|