Browse Source

修改备货可重复扫描

training
caoyizhong 2 years ago
parent
commit
e37b6477a8
  1. 26
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionStockupAppController.java
  2. 19
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RedissonConfig.java
  3. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml
  4. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationPackageMapper.xml
  5. 28
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml
  6. 50
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java
  7. 18
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

26
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionStockupAppController.java

@ -24,14 +24,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.basicdata.feign.IBasicdataGoodsAreaClient;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.config.RedissonConfig;
import com.logpm.distribution.dto.app.StockupDTO;
import com.logpm.distribution.entity.*;
import com.logpm.distribution.mapper.DistributionStockListMapper;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.*;
import com.logpm.warehouse.entity.WarehouseGoodsAllocationEntity;
import com.logpm.warehouse.entity.WarehouseUpdownGoodsEntity;
import com.logpm.warehouse.entity.WarehouseWarehousingEntryEntity;
import com.logpm.warehouse.feign.IWarehouseGoodsAllocationClient;
import com.logpm.warehouse.feign.IWarehouseUpdownGoodsClient;
import com.logpm.warehouse.feign.IWarehouseUpdownGoodsLogClient;
@ -40,6 +38,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.redisson.api.RLock;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.stockup.StockupStatusConstant;
@ -51,16 +50,13 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictBizCache;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionException;
import org.springframework.transaction.TransactionStatus;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@ -150,7 +146,6 @@ public class DistributionStockupAppController extends BladeController {
log.info("#################pageList: 查询备货ID不能为空");
return R.fail(401, "查询备货ID不能为空");
}
Map<String, Object> map = distributionStockupService.selectHomeStockupPage(stockupDTO);
return R.data(map);
}
@ -240,8 +235,11 @@ public class DistributionStockupAppController extends BladeController {
planNum = planNum + vo.getPlanNum();
scanNum = scanNum + vo.getScanNum();
// Boolean aBoolean = distributionStockupService.getClientStockupTray(reservationId, vo.getAllocationId());
// Boolean aBoolean = distributionReservationPackageService.selectClientStockupState(reservationId, vo.getStockArticleId());
// Boolean aBoolean = distributionReservationPackageService.selectClientStockupState(reservationId, vo.getStockArticleId());
// vo.setTrayLean(aBoolean);
if (ObjectUtils.isNotNull(vo.getTrayId()) && !vo.getPallet().contains(",") && !vo.isCompleteStact() && ObjectUtils.isNotNull( vo.getAllocationId()) ) {
vo.setTrayLean(true);
}
}
map.put("planNum", planNum);
map.put("scanNum", scanNum);
@ -283,7 +281,7 @@ public class DistributionStockupAppController extends BladeController {
Integer orderStatus = stockupDTO.getOrderStatus();//1 客户订单 2库存品
Integer status = stockupDTO.getStatus();//0未完成 1已完成
Long allocationId = stockupDTO.getAllocationId(); //货位
Long trayId = Long.valueOf(stockupDTO.getTrayId()); //托盘Id
// Long trayId = Long.valueOf(stockupDTO.getTrayId()); //托盘Id
if (ObjectUtils.isNull(stockupId)) {
log.warn("##############orderInfo: 备货任务ID为空 allocation={}", stockupId);
@ -451,6 +449,14 @@ public class DistributionStockupAppController extends BladeController {
//手动
// TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
// try{
//设置lockey
String lockKey = stockupDTO.getPacketBarCode()+stockupDTO.getStockupId();
RLock lock = new RedissonConfig().redisson().getLock(lockKey);
if(lock.isLocked()){
String audioValue2 = DictBizCache.getValue(DictBizConstant.PDA_AUDIO, "2");
return Resp.scanFail("重复扫描!", audioValue2);
}
lock.lock(5, TimeUnit.SECONDS);
if (scanType == 1) {
//包件扫描
String orderCode = stockupDTO.getOrderCode();//订单自编号

19
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RedissonConfig.java

@ -0,0 +1,19 @@
package com.logpm.distribution.config;
import org.redisson.Redisson;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedissonConfig {
@Bean
public Redisson redisson() {
// 单机模式
Config config = new Config();
config.useSingleServer().setAddress("redis://192.168.10.100:6379").setDatabase(0);
config.useSingleServer().setPassword("A0c415");
return (Redisson) Redisson.create(config);
}
}

15
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml

@ -160,13 +160,13 @@
select GROUP_CONCAT( DISTINCT position_code)
from logpm_warehouse_updown_goods
where association_id = ldpl.id
) positionCode,lwug.allocation_id allocationId
) positionCode,lds.allocation_id allocationId
from logpm_distribution_parcel_list ldpl
LEFT JOIN logpm_distribution_stock lds on lds.parcel_list_id = ldpl.id
LEFT JOIN logpm_warehouse_updown_goods lwug on lwug.association_id = ldpl.id
<where>
<if test="param.allocationId != null and param.allocationId != ''"> and lwug.allocation_id = #{param.allocationId} </if>
<if test="param.allocationId != null and param.allocationId != ''"> and lds.allocation_id = #{param.allocationId} </if>
<if test="param.stockArticleId != null and param.stockArticleId != ''"> and ldpl.stock_article_id = #{param.stockArticleId} </if>
<if test="param.stockArticleIdList != null ">
and ldpl.stock_article_id in
@ -182,13 +182,13 @@
select GROUP_CONCAT( DISTINCT position_code)
from logpm_warehouse_updown_goods
where association_id = ldpl.id
) positionCode,lwug.allocation_id allocationId
) positionCode,lds.allocation_id allocationId
from logpm_distribution_parcel_list ldpl
LEFT JOIN logpm_distribution_stock lds on lds.parcel_list_id = ldpl.id
LEFT JOIN logpm_warehouse_updown_goods_log lwug on lwug.association_id = ldpl.id and lwug.create_time >= DATE_SUB(NOW(), INTERVAL 10 MINUTE)
<where>
<if test="param.allocationId != null and param.allocationId != ''"> and lwug.allocation_id = #{param.allocationId} </if>
<if test="param.allocationId != null and param.allocationId != ''"> and lds.allocation_id = #{param.allocationId} </if>
<if test="param.stockArticleId != null and param.stockArticleId != ''"> and ldpl.stock_article_id = #{param.stockArticleId} </if>
<if test="param.stockupId != null and param.stockupId != ''"> and lds.stockup_id = #{param.stockupId} </if>
<if test="param.stockArticleIdList != null ">
@ -303,11 +303,12 @@
lds.id =#{id}
</where>-->
select DISTINCT ldsi.stockup_id , ldpl.id id,ldpl.order_package_code orderPackageCode,lds.type stockupStatus,ldpl.firsts,ldpl.second,ldpl.third_product thirdProduct,
ldpl.material_name materialName,lds.create_time stockupDate,lds.stockup_area stockupArea,ldpl.goods_allocation goodsAllocation,ldpl.pallet
ldpl.material_name materialName,lds.create_time stockupDate,lds.stockup_area stockupArea,ldpl.goods_allocation goodsAllocation,lwtg.tray_code pallet
from logpm_distribution_stockup_info ldsi
LEFT JOIN logpm_distribution_reservation_package ldrp on ldrp.reservation_id = ldsi.reservation_id
LEFT JOIN logpm_distribution_parcel_list ldpl on ldpl.id = ldrp.parce_list_id
LEFT JOIN logpm_distribution_stock lds on ldpl.id = lds.parcel_list_id and lds.stockup_id = ldsi.stockup_id
LEFT JOIN logpm_warehouse_tray_goods lwtg on lwtg.association_id = ldpl.id and lwtg.association_type = '3'
<where>
ldsi.stockup_id =#{id}
</where>

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationPackageMapper.xml

@ -326,7 +326,7 @@ WHERE
where tray_id = #{trayId}
</select>
<select id="listPackage" resultType="com.logpm.distribution.vo.DistributionStockPackageVO">
select ldrp.parce_list_id parceListId,ldrp.packet_bar_code packetBarCode,ldrp.stock_article_id stockArticleId,ldpl.goods_allocation goodsAllocation,
select ldrp.parce_list_id parcelListId,ldrp.packet_bar_code packetBarCode,ldrp.stock_article_id stockArticleId,ldpl.goods_allocation goodsAllocation,
ldrp.reservation_id reservationId,lds.delivery_id deliveryId,lddi.note_number noteNumber,ldr.reservation_code reservationCode,ldpl.order_code orderCode
from logpm_distribution_reservation_package ldrp
LEFT JOIN logpm_distribution_parcel_list ldpl on ldrp.parce_list_id = ldpl.id

28
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml

@ -82,42 +82,24 @@
GROUP BY ldpl.id,lds.allocation_id
</select>
<select id="selectDistrilbutionBillPackWuSelf" resultType="com.logpm.distribution.vo.DistributionStockupSelfVO">
select DISTINCT CASE WHEN lwug.id is null THEN
(
(select COUNT(id)
from logpm_distribution_parcel_list
where stock_article_id = ldbs.stock_article_id) - (
select COUNT(lwug.id)
from logpm_distribution_parcel_list dpl
LEFT JOIN logpm_warehouse_updown_goods lwug on dpl.id = lwug.association_id
where dpl.stock_article_id = ldbs.stock_article_id
)
)
ELSE (
select COUNT(lwug.id)
from logpm_distribution_parcel_list dpl
LEFT JOIN logpm_warehouse_updown_goods lwug on dpl.id = lwug.association_id
where dpl.stock_article_id = ldbs.stock_article_id
)
END planNum ,(
select DISTINCT (
SELECT COUNT(lt.id)
FROM logpm_distribution_stock lt
WHERE lt.parcel_list_id = ldpl.id and lt.stockup_id = ldsi.stockup_id and lt.reservation_id = ldsi.reservation_id
WHERE lt.parcel_list_id = ldpl.id and lt.stockup_id = ldsi.stockup_id and lt.bill_lading_id = ldsi.reservation_id
) scanNum,(
select stockup_area
from logpm_distribution_stockup
where id = ldsi.stockup_id
) consignee,(
SELECT GROUP_CONCAT(lwtg.tray_code SEPARATOR ',')
FROM logpm_warehouse_tray_goods lwtg
where lwtg.association_id = ldpl.id and lwtg.association_type = 3
) trays,ldbs.stock_article_id stockArticleId
) trays,ldbs.stock_article_id stockArticleId,ldpl.id parcelListId,lds.allocation_id allocationId
from logpm_distribution_stockup_info ldsi
LEFT JOIN logpm_distrilbution_bill_stock ldbs on ldsi.reservation_id = ldbs.bill_lading_id
LEFT JOIN logpm_distribution_parcel_list ldpl on ldpl.stock_article_id = ldbs.stock_article_id and ldpl.order_package_grounding_status = 10
LEFT JOIN logpm_warehouse_updown_goods lwug on ldpl.id = lwug.association_id
where ldsi.stockup_id = #{stockupId} and ldsi.reservation_id = #{reservationId} and lwug.id is null
LEFT JOIN logpm_distribution_stock lds on ldpl.id = lds.parcel_list_id
where ldsi.stockup_id = #{stockupId} and ldsi.reservation_id = #{reservationId}
</select>
<select id="exportDistrilbutionBillStock" resultType="com.logpm.distribution.excel.DistrilbutionBillStockExcel">

50
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java

@ -996,14 +996,14 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
if(ObjectUtils.isNull(distributionStockupSelfVO.getConsignee())){
distributionStockupSelfVO.setConsignee(i.getConsignee());
}else{
if(ObjectUtils.isNotNull(distributionStockupSelfVO.getConsignee()) && !distributionStockupSelfVO.getConsignee().equals(i.getConsignee()) ){
if(ObjectUtils.isNotNull(i.getConsignee()) && !distributionStockupSelfVO.getConsignee().equals(i.getConsignee()) ){
distributionStockupSelfVO.setConsignee(distributionStockupSelfVO.getConsignee()+","+i.getConsignee());
}
}
if(ObjectUtils.isNull(distributionStockupSelfVO.getTrays())){
distributionStockupSelfVO.setTrays(i.getTrays());
}else{
if(ObjectUtils.isNotNull(distributionStockupSelfVO.getTrays()) && !distributionStockupSelfVO.getTrays().equals(i.getTrays())){
if(ObjectUtils.isNotNull(i.getTrays()) && !distributionStockupSelfVO.getTrays().equals(i.getTrays())){
distributionStockupSelfVO.setTrays(distributionStockupSelfVO.getTrays()+","+i.getTrays());
}
}
@ -1018,14 +1018,14 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
if(ObjectUtils.isNull(distributionStockupSelfVO.getConsignee())){
distributionStockupSelfVO.setConsignee(i.getConsignee());
}else{
if(ObjectUtils.isNotNull(distributionStockupSelfVO.getConsignee()) && !distributionStockupSelfVO.getConsignee().equals(i.getConsignee()) ){
if(ObjectUtils.isNotNull(i.getConsignee()) && !distributionStockupSelfVO.getConsignee().equals(i.getConsignee()) ){
distributionStockupSelfVO.setConsignee(distributionStockupSelfVO.getConsignee()+","+i.getConsignee());
}
}
if(ObjectUtils.isNull(distributionStockupSelfVO.getTrays())){
distributionStockupSelfVO.setTrays(i.getTrays());
}else{
if(ObjectUtils.isNotNull(distributionStockupSelfVO.getTrays()) && !distributionStockupSelfVO.getTrays().equals(i.getTrays())){
if(ObjectUtils.isNotNull(i.getTrays()) && !distributionStockupSelfVO.getTrays().equals(i.getTrays())){
distributionStockupSelfVO.setTrays(distributionStockupSelfVO.getTrays()+","+i.getTrays());
}
}
@ -1128,22 +1128,24 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
AtomicReference<Integer> j = new AtomicReference<>(0);
AtomicReference<Integer> y = new AtomicReference<>(0);
distributionStockupSelfVOS.forEach(i -> {
j.updateAndGet(v -> v + i.getPlanNum());
y.updateAndGet(v -> v + i.getScanNum());
if(ObjectUtils.isNull(distributionStockup.getConsignee())){
distributionStockup.setConsignee(i.getConsignee());
}else{
if(ObjectUtils.isNotNull(i.getConsignee()) && !distributionStockup.getConsignee().equals(i.getConsignee()) ){
String s = distributionStockup.getConsignee() + i.getConsignee();
distributionStockup.setConsignee(s);
if(ObjectUtils.isNull(i.getAllocationId())){
j.updateAndGet(v -> v + 1);
y.updateAndGet(v -> v + i.getScanNum());
if(ObjectUtils.isNull(distributionStockup.getConsignee())){
distributionStockup.setConsignee(i.getConsignee());
}else{
if(ObjectUtils.isNotNull(i.getConsignee()) && !distributionStockup.getConsignee().equals(i.getConsignee()) ){
String s = distributionStockup.getConsignee() + i.getConsignee();
distributionStockup.setConsignee(s);
}
}
}
if(ObjectUtils.isNull(distributionStockup.getTrays())){
distributionStockup.setTrays(i.getTrays());
}else{
if(ObjectUtils.isNotNull(i.getTrays()) && !distributionStockup.getTrays().equals(i.getTrays())){
String s = distributionStockup.getTrays() + i.getTrays();
distributionStockup.setTrays(s);
if(ObjectUtils.isNull(distributionStockup.getTrays())){
distributionStockup.setTrays(i.getTrays());
}else{
if(ObjectUtils.isNotNull(i.getTrays()) && !distributionStockup.getTrays().equals(i.getTrays())){
String s = distributionStockup.getTrays() + i.getTrays();
distributionStockup.setTrays(s);
}
}
}
});
@ -1165,7 +1167,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
if(Objects.isNull(stockupDTO.getAllocationId())){
while (iterator.hasNext()){
PackageStockupVO next = iterator.next();
if(ObjectUtils.isNotNull(next.getPositionCode()) ){
if(ObjectUtils.isNotNull(next.getAllocationId()) ){
iterator.remove();
continue;
}
@ -1451,7 +1453,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
parcelList.setOrderPackageStockupStatus(OrderPackageStockupStatusConstant.yibeihu.getValue());
distributionParcelListService.updateById(parcelList);
//货位下架
warehouseUpdownTypeClient.downPackage(i.getPacketBarCode());
// warehouseUpdownTypeClient.downPackage(i.getPacketBarCode());
//判断备货任务是否完成
if(one.getStockUpType().equals("3")){
distributionAsyncService.stockupSelfUpdateState(stockupDTO);
@ -1475,7 +1477,11 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
distributionStock.setStockupId(stockupDTO.getStockupId());
distributionStock.setStockArticle(i.getStockArticleId());
// distributionStock.setGoodsAllocation(i.getGoodsAllocation());//货位信息
//备货区
DistributionStockupEntity distributionStockupEntity = distributionStockupService.selectById(stockupDTO.getStockupId());
if(ObjectUtils.isNotNull(distributionStockupEntity)){
distributionStock.setStockupArea(distributionStockupEntity.getStockupArea());
}
distributionStock.setParcelListId(i.getParcelListId());
distributionStock.setOrderSelfNumbering(i.getOrderCode());
distributionStock.setType(1);

18
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.config.RedissonConfig;
import com.logpm.distribution.dto.DistributionStockListDTO;
import com.logpm.distribution.dto.DistrilbutionBillLadingDTO;
import com.logpm.distribution.dto.app.BillLadingAppDTO;
@ -42,6 +43,7 @@ import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingOrderVO;
import com.logpm.distribution.vo.app.DistrilbutionBillLadingInventoryAppVO;
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper;
import lombok.AllArgsConstructor;
import org.redisson.api.RLock;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.billLading.BillLadingStatusConstant;
import org.springblade.common.constant.order.OrderReservationStatusConstant;
@ -65,6 +67,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@ -268,6 +271,20 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
}
}
} else {
//设置lockey
String lockKey ="lock:" + distrilbutionBillLading.getStockArticleId();
RLock lock = new RedissonConfig().redisson().getLock(lockKey);
if(lock.isLocked()){
throw new ServiceException("请勿重复提交!!!");
}
lock.lock(5, TimeUnit.SECONDS);
List<DistrilbutionBillStockEntity> list = distrilbutionBillStockService.list(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
.eq(!distrilbutionBillLading.getStockArticleId().contains(","),DistrilbutionBillStockEntity::getStockArticleId, distrilbutionBillLading.getStockArticleId())
.in(distrilbutionBillLading.getStockArticleId().contains(","),DistrilbutionBillStockEntity::getStockArticleId, distrilbutionBillLading.getStockArticleId().split(","))
);
if(!list.isEmpty()){
throw new ServiceException("当前订单已创建!");
}
//新增
distrilbutionBillLading.setConsignee("1");
distrilbutionBillLading.setStockupCode(distributionReservationService.bianMa());
@ -285,6 +302,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if (StringUtils.isNotBlank(distrilbutionBillLading.getStockArticleId())) {
String[] split = distrilbutionBillLading.getStockArticleId().split(",");
for (String s : split) {
//查询是否创建过
DistributionStockArticleEntity distributionStockArticle = new DistributionStockArticleEntity();
distributionStockArticle.setId(Long.parseLong(s));
// distributionStockArticle.setOrderStatus(OrderStatusConstant.zhuangche.getValue());

Loading…
Cancel
Save