diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
index 6d3c4fa..dc608b9 100644
--- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
@@ -20,6 +20,7 @@ import com.huaheng.pc.config.zone.domain.Zone;
 import com.huaheng.pc.config.zone.service.ZoneService;
 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StopWatch;
 
 import javax.annotation.Resource;
@@ -28,6 +29,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.huaheng.common.constant.QuantityConstant.*;
 import static java.util.stream.Collectors.toList;
 
 @Service
@@ -48,20 +50,14 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
     @Resource
     private ConfigService configService;
 
+    @Transactional
     @Override
     public String allocation(int high, String area, String roadWay, String containerCode, Integer frequencyLocation,
                              Integer emptyContainerTask, Integer isSelfCreated, boolean isFlammable) {
 
-        //容器
-        Container container = containerService.getOne(new LambdaQueryWrapper<Container>().eq(Container::getCode, containerCode));
-        //容器类型
-        ContainerType containerType = containerTypeService.getOne(new LambdaQueryWrapper<ContainerType>().eq(ContainerType::getCode, container.getContainerType()));
-        if (containerType == null) {
-            throw new ServiceException("容器类型不存在");
-        }
         //二期5号巷道
         if (roadWay.equals("5")) {
-            return fiveStacker(high, containerType.getCode());
+            return fiveStacker(high, containerCode);
         } else {
             return doubleRk(area, roadWay, high, frequencyLocation, emptyContainerTask, isSelfCreated, isFlammable);
         }
@@ -70,13 +66,15 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
 
     //一厂二期5号堆垛机,大小托盘
     //分配库位排序,(层-外侧-内侧-列)
-    private String fiveStacker(int high, String containerTypeCode) {
+    private String fiveStacker(int high, String containerCode) {
+        Container container = containerService.getOne(new LambdaQueryWrapper<Container>().eq(Container::getCode, containerCode));
+        String containerType = container.getContainerType();
         //判断预留库位
         int reserveNumber = getReserveNumber();
         LambdaQueryWrapper<Location> wrapper = Wrappers.lambdaQuery();
         wrapper
                 .eq(Location::getRoadway, 5)
-                .eq(Location::getStatus, QuantityConstant.STATUS_LOCATION_EMPTY)
+                .eq(Location::getStatus, STATUS_LOCATION_EMPTY)
                 .eq(Location::getHigh, high)
                 .eq(Location::getContainerCode, "")
                 .ne(Location::getIColumn, "26")
@@ -91,17 +89,17 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
         }
 
         //大托盘占两个库位
-        if (containerTypeCode.equals("X") || containerTypeCode.equals("W")) {
+        if (containerType.equals(CONTAINER_TYPE_X) || containerType.equals(CONTAINER_TYPE_W)) {
             for (Location location : list) {
-                if (location.getIColumn() % 2 != 0 && location.getTemporaryType().charAt(0) != '1') {
+                if (location.getIColumn() % 2 != 0 && location.getTemporaryType().startsWith(SMALL_CONTAINER_TYPE)) {
                     Location rightLocation = locationService.getRightEmptyLocation(location);
                     if (rightLocation != null) {
                         //禁用库位
-                        int updateCount = locationService.updateStatusNew(rightLocation.getCode(), "CS0001", QuantityConstant.STATUS_LOCATION_DISABLE, QuantityConstant.STATUS_LOCATION_EMPTY);
+                        int updateCount = locationService.updateStatusNew(rightLocation.getCode(), DEFAULT_WAREHOUSE, STATUS_LOCATION_DISABLE, STATUS_LOCATION_EMPTY);
                         if (updateCount != 1) {
                             throw new ServiceException("禁用库位失败");
                         }
-                        if (location.getTemporaryType().equals("0")) {
+                        if (location.getTemporaryType().equals(UNDEFINED_CONTAINER_TYPE)) {
                             //设置相邻临时库位类型
                             setTemporaryLocationType(location, true);
                         }
@@ -113,12 +111,12 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
         } else {
             //小托盘不分配25列
             list = list.stream().filter(location -> location.getIColumn() != 25
-                    && location.getTemporaryType().charAt(0) != '2').collect(toList());
+                    && !String.valueOf(location.getTemporaryType()).startsWith(BIG_CONTAINER_TYPE)).collect(Collectors.toList());
             if (list.isEmpty()) {
                 return null;
             }
             Location location = list.get(0);
-            if (location.getTemporaryType().equals("0")) {
+            if (location.getTemporaryType().equals(UNDEFINED_CONTAINER_TYPE)) {
                 //设置相邻临时库位类型
                 setTemporaryLocationType(location, false);
             }
@@ -129,7 +127,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
     //设置相邻临时库位类型
     void setTemporaryLocationType(Location location, boolean isBigContainer) {
         List<Location> setTemporaryTypeList = new ArrayList<>();
-        String prefix = isBigContainer ? "2-" : "1-";
+        String prefix = isBigContainer ? BIG_CONTAINER_TYPE : SMALL_CONTAINER_TYPE;
 
         setTemporaryTypeList.add(location);
         setTemporaryTypeList.add(getLocationByOffset(location, 0, 1));
@@ -138,8 +136,10 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
 
         for (Location temporaryLocation : setTemporaryTypeList) {
             if (temporaryLocation != null) {
-                temporaryLocation.setTemporaryType(prefix + location.getCode() + "-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH:mm:ss")));
-                locationService.updateById(temporaryLocation);
+                temporaryLocation.setTemporaryType(prefix + "-" + location.getCode() + "-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH:mm:ss")));
+                if (locationService.updateById(temporaryLocation)) {
+                    throw new ServiceException("设置临时库位类型失败");
+                }
             }
         }
     }
@@ -164,7 +164,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
         LambdaQueryWrapper<Location> wrapper = Wrappers.lambdaQuery();
         wrapper.eq(Location::getArea, area)
                 .eq(Location::getRoadway, roadWay)
-                .eq(Location::getStatus, QuantityConstant.STATUS_LOCATION_EMPTY)
+                .eq(Location::getStatus, STATUS_LOCATION_EMPTY)
                 .eq(Location::getHigh, high)
                 .eq(Location::getContainerCode, "")
                 .orderByAsc(Location::getILayer)
@@ -196,9 +196,9 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
         LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery();
         locationLambda.eq(Location::getArea, area)
                 .eq(Location::getRoadway, roadWay)
-                .eq(Location::getStatus, QuantityConstant.STATUS_LOCATION_EMPTY)
+                .eq(Location::getStatus, STATUS_LOCATION_EMPTY)
                 .eq(Location::getHigh, high)
-                .eq(Location::getRowFlag, QuantityConstant.ROW_OUT)//外侧
+                .eq(Location::getRowFlag, ROW_OUT)//外侧
                 .eq(Location::getContainerCode, "")
                 .last(" limit 20");
 
@@ -217,7 +217,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
         }
 
         //频繁库位
-        String str = "";
+        String str;
         if (frequencyLocation == 1) {
             str = "frequencyLocation asc";
             //locationLambda.orderByAsc(Location::getFrequencyLocation); //升序
@@ -258,9 +258,9 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
             locationLambda = Wrappers.lambdaQuery();
             locationLambda.eq(Location::getArea, area)
                     .eq(StringUtils.isNotEmpty(roadWay), Location::getRoadway, roadWay)
-                    .eq(Location::getStatus, QuantityConstant.STATUS_LOCATION_EMPTY)
+                    .eq(Location::getStatus, STATUS_LOCATION_EMPTY)
                     .eq(Location::getHigh, high)
-                    .eq(Location::getRowFlag, QuantityConstant.ROW_IN)
+                    .eq(Location::getRowFlag, ROW_IN)
                     .eq(Location::getContainerCode, "")
                     .last(" limit 20");
             if (emptyContainerTask == 1) {
@@ -318,7 +318,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
 
     //获取双伸位预留库位数
     private int getReserveNumber() {
-        String value = configService.getKey(QuantityConstant.DOUBLE_FORK_RESERVE_LOCATION);
+        String value = configService.getKey(DOUBLE_FORK_RESERVE_LOCATION);
         return StringUtils.isNotEmpty(value) ? Integer.parseInt(value) : 0;
     }
 
diff --git a/src/main/java/com/huaheng/common/constant/QuantityConstant.java b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
index ec753dc..42f8f28 100644
--- a/src/main/java/com/huaheng/common/constant/QuantityConstant.java
+++ b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
@@ -545,4 +545,19 @@ public class QuantityConstant {
     public static final String DEFAULT_DEPT = "01030101";
     public static final String DEFAULT_STOCK = "035";
 
+
+    /**
+     * 动态分配库位
+     */
+    public static final String CONTAINER_TYPE_X = "X";
+    public static final String CONTAINER_TYPE_W = "W";
+
+    /**
+     * 库位临时托盘类型
+     */
+    public static final String UNDEFINED_CONTAINER_TYPE = "0";
+    public static final String SMALL_CONTAINER_TYPE = "1";
+    public static final String BIG_CONTAINER_TYPE = "2";
+
+
 }
diff --git a/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java b/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java
index 526036a..3f9bf17 100644
--- a/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java
@@ -33,6 +33,8 @@ import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
 import io.swagger.models.auth.In;
 import org.springframework.stereotype.Service;
 
+import static com.huaheng.common.constant.QuantityConstant.*;
+
 import javax.annotation.Resource;
 import java.text.MessageFormat;
 import java.util.*;
@@ -783,36 +785,39 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
     @Override
     public void unbanRightLocationAndUnmark(String containerType, String locationCode) {
         //解禁用右侧库位
-        Location location = locationService.getLocationByCode(locationCode, "CS0001");
-        if (("X".equals(containerType) || "W".equals(containerType)) && "5".equals(location.getRoadway())) {
+        Location location = locationService.getLocationByCode(locationCode, DEFAULT_WAREHOUSE);
+        if ((CONTAINER_TYPE_X.equals(containerType) || CONTAINER_TYPE_W.equals(containerType)) && "5".equals(location.getRoadway())) {
             Location rightLocation = locationService.getRightDisableLocation(location);
             if (rightLocation != null) {
-                int updateCount = locationService.updateStatusNew(rightLocation.getCode(), "CS0001", QuantityConstant.STATUS_LOCATION_EMPTY, QuantityConstant.STATUS_LOCATION_DISABLE);
+                int updateCount = locationService.updateStatusNew(rightLocation.getCode(), DEFAULT_WAREHOUSE, STATUS_LOCATION_EMPTY, STATUS_LOCATION_DISABLE);
                 if (updateCount != 1) {
                     throw new ServiceException("重复分配库位时,解锁禁用失败!");
                 }
             }
         }
 
-        //清除库位的上下左右库位标记
-        if (location.getTemporaryType().equals("0")) {
+        //清除就近4个库位的标记
+        if (location.getTemporaryType().equals(UNDEFINED_CONTAINER_TYPE)) {
             throw new ServiceException("库位未被标记异常!");
         }
         List<Location> list = locationService.list(new LambdaQueryWrapper<Location>().eq(Location::getTemporaryType, location.getTemporaryType()));
-        if (!list.isEmpty()) {
-            boolean flat = true;
-            for (Location l : list) {
-                if (StringUtils.isNotEmpty(l.getContainerCode()) || !l.getStatus().equals(QuantityConstant.STATUS_LOCATION_EMPTY)) {
-                    flat = false;
-                    break;
-                }
-            }
-            if (flat) {
-                locationService.update(new LambdaUpdateWrapper<Location>()
-                        .set(Location::getTemporaryType, "0").in(Location::getCode, list.stream()
-                                .map(Location::getCode).collect(Collectors.toList())));
+        if (list.size() != 4) {
+            throw new ServiceException("库位标记异常,相同标记未达4个:" + list.size());
+        }
+
+        //4个库位都是空的,并且状态位空,才能清除标记
+        boolean flat = true;
+        for (Location l : list) {
+            if (StringUtils.isNotEmpty(l.getContainerCode()) || !l.getStatus().equals(STATUS_LOCATION_EMPTY)) {
+                flat = false;
+                break;
             }
         }
+        if (flat) {
+            locationService.update(new LambdaUpdateWrapper<Location>()
+                    .set(Location::getTemporaryType, UNDEFINED_CONTAINER_TYPE).in(Location::getCode, list.stream()
+                            .map(Location::getCode).collect(Collectors.toList())));
+        }
 
     }