diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java index f63dbd57d..3098be8d6 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java @@ -42,8 +42,8 @@ public interface IDistributionParcelListClient { String TOP = API_PREFIX + "/top1"; String TOPPARCELLIST = API_PREFIX + "/getParcelList"; - @GetMapping(TOPPARCELLIST) - List<DistributionParcelListEntity> getParcelList(DistributionParcelListEntity parcelListEntity); + @PostMapping(TOPPARCELLIST) + List<DistributionParcelListEntity> getParcelList(@RequestBody DistributionParcelListEntity parcelListEntity); /** * 获取在库订单包件清单列表 diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionStockArticleGroundingVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionStockArticleGroundingVO.java new file mode 100644 index 000000000..85c652dea --- /dev/null +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionStockArticleGroundingVO.java @@ -0,0 +1,14 @@ +package com.logpm.distribution.vo; + +import com.logpm.distribution.entity.DistributionStockArticleEntity; +import lombok.Data; + +@Data +public class DistributionStockArticleGroundingVO extends DistributionStockArticleEntity { + + + + + + +} diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/QuestDetailEntity.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/QuestDetailEntity.java index c82495dd2..3904a756b 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/QuestDetailEntity.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/QuestDetailEntity.java @@ -90,6 +90,11 @@ public class QuestDetailEntity extends TenantEntity { */ @ApiModelProperty(value = "包条码;对应定制品") private String ordePackageCode; + /** + * 零担 运单号 + */ + @ApiModelProperty(value = "零担 运单号") + private String waybillNumber; /** * 包条ID;对应定制品 */ diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/QuestDetailVO.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/QuestDetailVO.java index 29d8949b7..7e3f76121 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/QuestDetailVO.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/QuestDetailVO.java @@ -16,11 +16,14 @@ */ package com.logpm.warehouse.vo; +import com.logpm.warehouse.entity.QuestDetailChildEntity; import com.logpm.warehouse.entity.QuestDetailEntity; import org.springblade.core.tool.node.INode; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.List; + /** * 盘点明细 视图实体类 * @@ -31,5 +34,11 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) public class QuestDetailVO extends QuestDetailEntity { private static final long serialVersionUID = 1L; + //包件状态 + private List<QuestDetailChildEntity> list; + + + + } diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/TaskTrayVO.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/TaskTrayVO.java index e1ec13cc0..27021aff2 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/TaskTrayVO.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/TaskTrayVO.java @@ -54,6 +54,6 @@ public class TaskTrayVO { /** * */ - private List<QuestDetailEntity> list; + private List<QuestDetailVO> list; } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java index 3bdd588b7..32517fbd3 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java @@ -53,7 +53,7 @@ public class DistributionParcelListClient implements IDistributionParcelListClie * @return */ @Override - @GetMapping(TOPPARCELLIST) + @PostMapping(TOPPARCELLIST) public List<DistributionParcelListEntity> getParcelList(DistributionParcelListEntity parcelListEntity) { return distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda() .eq(ObjectUtils.isNotNull(parcelListEntity.getOrderPackageCode()),DistributionParcelListEntity::getOrderPackageCode,parcelListEntity.getOrderPackageCode()) diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml index 07e2e74a1..13fb8b9b9 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml @@ -215,7 +215,7 @@ from logpm_distribution_reservation_stockarticle ldrs LEFT JOIN logpm_distribution_stock_article ldsa on ldrs.stock_article_id = ldsa.id - LEFT JOIN logpm_distribution_parcel_list ldpl on ldrs.stock_article_id = ldpl.stock_article_id + LEFT JOIN logpm_distribution_parcel_list ldpl on ldrs.stock_article_id = ldpl.stock_article_id and ldpl.order_package_status != '70' LEFT JOIN logpm_warehouse_updown_goods lwug on ldpl.id = lwug.association_id LEFT JOIN logpm_warehouse_tray_goods lwtg on lwtg.association_id = lwug.association_id LEFT JOIN logpm_distribution_stock lds on lds.parcel_list_id = ldpl.id and lds.reservation_id = ldrs.reservation_id diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java index 5ef03b14b..29b7b8cc7 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java @@ -17,6 +17,7 @@ package com.logpm.distribution.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.distribution.dto.DistributionStockArticleOweDTO; @@ -25,6 +26,7 @@ import com.logpm.distribution.excel.DistributionStockArticleExcel; import com.logpm.distribution.vo.DistributionParcelNumberVO; import com.logpm.distribution.vo.DistributionStockArticleQRCodeVO; import com.logpm.distribution.vo.DistributionStockArticleVO; +import com.logpm.distribution.vo.app.DistributionAppStockArticleVO; import com.logpm.distribution.vo.app.queryOrderVO; import org.apache.ibatis.annotations.Param; @@ -106,4 +108,11 @@ public interface DistributionStockArticleMapper extends BaseMapper<DistributionS * @return */ List<DistributionParcelNumberVO> getZeroOrderDetail(@Param("stockArticleId") Long id); + + /** + * + * @param ids + * @return + */ + List<DistributionAppStockArticleVO> selectListGrounding(@Param("ids")List<String> ids); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml index 8cb243fca..522baa4c3 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml @@ -570,6 +570,21 @@ </where> </select> + <select id="selectListGrounding" resultType=""> + select ldsa.grounding_status,lwtg.association_type + from logpm_distribution_stock_article ldsa + LEFT JOIN logpm_distribution_parcel_list ldpl on ldsa.id = ldpl.stock_article_id + LEFT JOIN logpm_warehouse_tray_goods lwtg on lwtg.association_id = ldpl.id + <where> + ldsa.is_deleted = "0" + <if test="ids != null "> + and ldsa.id in + <foreach collection="ids" item="a" open="(" close=")" separator=","> + #{a} + </foreach> + </if> + </where> + </select> <select id="getZeroOrderDetail" resultType="com.logpm.distribution.vo.DistributionParcelNumberVO"> SELECT ldpn.id AS id, diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java index 85b3fce5a..141b01c77 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java @@ -16,6 +16,7 @@ */ package com.logpm.distribution.service.impl; +import cn.hutool.core.util.ArrayUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -45,6 +46,7 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.DictBizConstant; import org.springblade.common.constant.common.IsOrNoConstant; +import org.springblade.common.constant.orderpackage.OrderPackageGroundingStatusConstant; import org.springblade.common.constant.printTemplate.PrintTemplateStatusConstant; import org.springblade.common.utils.CommonUtil; import org.springblade.common.utils.FileUtil; @@ -145,12 +147,28 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib //查询 List<DistributionParcelListEntity> list1 = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda() .in(DistributionParcelListEntity::getStockArticleId, ids.split(",")) + ); + //查询包件有没有上架,打托信息 + List<DistributionStockArticleEntity> list2 = baseMapper.selectListGrounding(Arrays.asList(ids.split(","))); + + + + boolean b = list2.stream().anyMatch(i -> i.getGroundingStatus().equals(OrderPackageGroundingStatusConstant.yishangjia.getValue())); + if(b){ + throw new ServiceException("选择的订单有上架的包件,请下架过后在操作!"); + } if (list1.size() > 0) { + + list1.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getMaterialId)) .forEach((k ,v) ->{ int sum = v.stream().mapToInt(DistributionParcelListEntity::getQuantity).sum(); v.stream().forEach( i -> { + //查询有没有打托数据 + + + //查询包件有没有物料 List<DistributionParcelDetailsEntity> list = distributionParcelDetailsService.list(Wrappers.<DistributionParcelDetailsEntity>query().lambda() .eq(DistributionParcelDetailsEntity::getParcelListId, i.getId()) diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/TaskQuestServiceImpl.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/TaskQuestServiceImpl.java index 3339b02a8..fec627d63 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/TaskQuestServiceImpl.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/TaskQuestServiceImpl.java @@ -273,6 +273,7 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ } @Override + @Transactional(rollbackFor = Exception.class) public R selecttrayList(IPage<TaskTrayVO> page, TaskSearchDTO taskSearchDTO) { //todo 验证盘点信息 @@ -298,7 +299,7 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ List<QuestDetailEntity> list = getQuestDetailList(taskSearchDTO,myCurrentWarehouse.getId(),trayByTrayCode.getId()); // List<TaskTrayVO> list = getTaskTrayInfo(page,taskSearchDTO,collect);// 查询有没有当次盘点任务的托盘数据 if (!list.isEmpty()){ //有盘点数据 - return R.data(getTaskTrayInfo(list,1)); + return R.data(getTaskTrayInfo(list)); }else{ //添加扫描的托盘信息 //添加托盘上面的数据 @@ -308,7 +309,7 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ return Resp.scanFail("没有盘点信息!","没有盘点信息!"); case 1: List<QuestDetailEntity> questDetailList = getQuestDetailList(taskSearchDTO,myCurrentWarehouse.getId(),trayByTrayCode.getId()); - return R.data(getTaskTrayInfo(questDetailList,1)); + return R.data(getTaskTrayInfo(questDetailList)); case 2: return Resp.scanFail("托盘信息未找到!","托盘信息未找到!"); case 3: @@ -323,7 +324,7 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ List<QuestDetailEntity> list1 = getQuestDetailList(taskSearchDTO,myCurrentWarehouse.getId(),null); if(!list1.isEmpty()){ // int sum = list1.stream().mapToInt(QuestDetailEntity::getStockNum).sum(); //总数 - return R.data(getTaskTrayInfo(list1,1)); + return R.data(getTaskTrayInfo(list1)); } return R.success("成功"); } @@ -335,7 +336,7 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ * 出来托盘信息 * @return */ - private List<TaskTrayVO> getTaskTrayInfo(List<QuestDetailEntity> list1,int type){ + private List<TaskTrayVO> getTaskTrayInfo(List<QuestDetailEntity> list1){ // return baseMapper.selecttrayList(page,taskSearchDTO,collect);// 查询有没有当次盘点任务的托盘数据 List<TaskTrayVO> list = new ArrayList<>(); @@ -345,10 +346,6 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ taskTrayVO.setTrayId(k); AtomicReference<Integer> num = new AtomicReference<>(0); //总数 AtomicReference<Integer> unTotal = new AtomicReference<>(0); //盘点数 - if(type == 2){ - //添加包件信息 - taskTrayVO.setList(v); - } v.forEach( p ->{ taskTrayVO.setTrayCode(p.getTrayCode()); num.set(num.get() + p.getStockNum()); @@ -374,6 +371,57 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ return list; } + + /** + * 托盘ID信息货物处理 + * @return + */ + private TaskTrayVO getTaskTrayInfoOwn(List<QuestDetailEntity> list1,String type){ + + TaskTrayVO taskTrayVO = new TaskTrayVO(); + list1.stream().collect(Collectors.groupingBy(QuestDetailEntity::getTrayId)) + .forEach((k,v) ->{ + taskTrayVO.setTrayId(k); + AtomicReference<Integer> num = new AtomicReference<>(0); //总数 + AtomicReference<Integer> unTotal = new AtomicReference<>(0); //盘点数 + List<QuestDetailVO> detailVOS = new ArrayList<>(); + v.forEach( p ->{ + taskTrayVO.setTrayCode(p.getTrayCode()); + num.set(num.get() + p.getStockNum()); + if(p.getQuestStatus().equals(1)){ + unTotal.set(unTotal.get() + p.getQuestStatus()); + } + QuestDetailVO questDetailVO = new QuestDetailVO(); + switch (p.getQuestTarget()){ + case 1: + taskTrayVO.setGoodsType("定制品"); + break; + case 2: + taskTrayVO.setGoodsType("零担"); + break; + case 3: + taskTrayVO.setGoodsType("库存品"); + break; + } + + BeanUtil.copyProperties(p,questDetailVO); + //查询货物状态 + List<QuestDetailChildEntity> list = questDetailChildService.list(Wrappers.<QuestDetailChildEntity>query().lambda() + .eq(QuestDetailChildEntity::getQuestDetailId, p.getId()) + .eq(QuestDetailChildEntity::getWarehouseId, p.getWarehouseId()) + .eq(QuestDetailChildEntity::getWarehouseId, p.getWarehouseId()) + ); + questDetailVO.setList(list); + detailVOS.add(questDetailVO); + }); + taskTrayVO.setList(detailVOS); + taskTrayVO.setTotal(num.get()); + taskTrayVO.setUnTotal(unTotal.get()); + + }); + return taskTrayVO; + } + /** * 查询托盘里面的信息 * @param taskSearchDTO @@ -400,7 +448,10 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ public R trayListInfo(IPage<Object> page, TaskSearchDTO taskSearchDTO) { BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse(); List<QuestDetailEntity> questDetailList = getQuestDetailList(taskSearchDTO, myCurrentWarehouse.getId(), taskSearchDTO.getTrayId()); - return R.data(getTaskTrayInfo(questDetailList,2)); + + + + return R.data(getTaskTrayInfoOwn(questDetailList,taskSearchDTO.getGoodsType())); } @@ -413,6 +464,7 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ * @param trayByTrayCode 托盘 * @return */ + @Transactional(rollbackFor = Exception.class) private int getTaskInventory(Long taskId,Long warehouseId,BasicdataTrayEntity trayByTrayCode){ //查询是否在当前任务内 List<TaskQuestChildEntity> list = taskQuestChildService.list(Wrappers.<TaskQuestChildEntity>query().lambda() @@ -437,8 +489,10 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ //部分盘点 //查询订单信息 DistributionStockArticleEntity distributionStockArticleEntity = getStockArticleInfo(i.getAssociationId()); - if(!list.stream().anyMatch(d -> d.getRefId().equals(distributionStockArticleEntity.getMallId()))){ + if(!list.stream().anyMatch(d -> d.getRefName().equals(distributionStockArticleEntity.getMallName()))){ continue; + }else{ + questDetail.setWaybillNumber(distributionStockArticleEntity.getWaybillNumber()); } } questDetail.setOrderId(i.getAssociationId()); @@ -456,27 +510,30 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ case "3": //3包件码 //查询订单ID //查询订单信息 - DistributionStockArticleEntity distributionStockArticleEntity = getStockArticleInfo(i.getAssociationId()); - if(!list.stream().anyMatch(d -> d.getRefId().equals(distributionStockArticleEntity.getMallId()))){ - continue; - } questDetail.setQuestTarget(1);// - questDetail.setOrderCode(distributionStockArticleEntity.getOrderCode());// questDetail.setOrdePackageCode(i.getAssociationValue());//包条码 questDetail.setOrderPackageId(i.getAssociationId());//包件ID DistributionParcelListEntity parcelList = new DistributionParcelListEntity(); parcelList.setId(i.getAssociationId()); parcelList.setOrderPackageCode(i.getAssociationValue()); List<DistributionParcelListEntity> parcelList1 = distributionParcelListClient.getParcelList(parcelList); + if(!parcelList1.isEmpty()){ + questDetail.setOrderId(parcelList1.get(0).getStockArticleId()); + }else{ + continue; + } + DistributionStockArticleEntity distributionStockArticleEntity = getStockArticleInfo(parcelList1.get(0).getStockArticleId()); + if(!list.stream().anyMatch(d -> d.getRefName().equals(distributionStockArticleEntity.getMallName()))){ + continue; + } + questDetail.setOrderCode(distributionStockArticleEntity.getOrderCode());// WarehouseUpdownGoodsEntity warehouseUpdownGoodsEntity = getUpdownGoodsPack(i.getAssociationId(),"3",i.getAssociationValue(),warehouseId); if(Optional.ofNullable(warehouseUpdownGoodsEntity).isPresent()){ questDetail.setPositionCode(warehouseUpdownGoodsEntity.getPositionCode());//完整货位 questDetail.setAllocationId(warehouseUpdownGoodsEntity.getAllocationId()); } - if(!parcelList1.isEmpty()){ - questDetail.setOrderId(parcelList1.get(0).getStockArticleId()); - } + break; case "4": //4库存品 @@ -488,7 +545,7 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ stockListEntity.setMaterialId(i.getAssociationId()); //查询订单信息 DistributionStockListEntity stockListInfo = getStockListInfo(stockListEntity); - if(!list.stream().anyMatch(d -> d.getRefId().equals(stockListInfo.getMarketId()))){ + if(!list.stream().anyMatch(d -> d.getRefName().equals(stockListInfo.getMarketName()))){ continue; } stockListEntity.setOrderCode(stockListInfo.getOrderCode()); @@ -501,6 +558,8 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ Optional<DistributionStockListVO> queryData1 = Optional.ofNullable(queryData); if(queryData1.isPresent()){ questDetail.setStockId(queryData.getId()); + questDetail.setMaterialCode(queryData.getCargoNumber()); + questDetail.setCategoryName(queryData.getDescriptionGoods()); } break; }