diff --git a/src/main/java/com/huaheng/pc/config/camera/controller/CameraController.java b/src/main/java/com/huaheng/pc/config/camera/controller/CameraController.java
new file mode 100644
index 0000000..c41d478
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/camera/controller/CameraController.java
@@ -0,0 +1,211 @@
+package com.huaheng.pc.config.camera.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.pc.config.camera.service.ICameraService;
+import com.huaheng.pc.system.user.domain.User;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.pc.config.camera.domain.Camera;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.common.support.Convert;
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+
+@Controller
+@RequestMapping("/config/camera")
+public class CameraController extends BaseController {
+    private String prefixSB = "config/camera";
+
+	@Resource
+	private ICameraService cameraService;
+
+	@GetMapping("/openCamera")
+	public String camera() {
+	    return prefixSB+"/camera.html";
+	}
+
+	/**
+	 * 查询【请填写功能名称】列表
+	 */
+	@RequiresPermissions("config:camera:list")
+	@PostMapping("/list")
+	@ResponseBody
+	public TableDataInfo list(Camera camera) {
+		LambdaQueryWrapper<Camera> lambdaQueryWrapper = Wrappers.lambdaQuery();
+		lambdaQueryWrapper
+		.eq(StringUtils.isNotEmpty(camera.getWarehouseCode()), Camera::getWarehouseCode, camera.getWarehouseCode())
+										.eq(StringUtils.isNotEmpty(camera.getCompanyCode()), Camera::getCompanyCode, camera.getCompanyCode())
+										.eq(StringUtils.isNotEmpty(camera.getIp()), Camera::getIp, camera.getIp())
+										.eq(StringUtils.isNotEmpty(camera.getPort()), Camera::getPort, camera.getPort())
+									.like(StringUtils.isNotEmpty(camera.getUserName()), Camera::getUserName, camera.getUserName())
+									.eq(StringUtils.isNotEmpty(camera.getPassword()), Camera::getPassword, camera.getPassword())
+										.eq(StringUtils.isNotEmpty(camera.getUseKey()), Camera::getUseKey, camera.getUseKey())
+									.eq(StringUtils.isNotNull(camera.getIsEnable()), Camera::getIsEnable, camera.getIsEnable())
+									.eq(StringUtils.isNotNull(camera.getIsLocked()), Camera::getIsLocked, camera.getIsLocked())
+				.eq(StringUtils.isNotNull(ShiroUtils.getWarehouseCode()),Camera::getWarehouseCode,ShiroUtils.getWarehouseCode());
+		PageDomain pageDomain = TableSupport.buildPageRequest();
+		Integer pageNum = pageDomain.getPageNum();
+		Integer pageSize = pageDomain.getPageSize();
+		if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+			/*使用分页查询*/
+			Page<Camera> page = new Page<>(pageNum, pageSize);
+			IPage<Camera> iPage = cameraService.page(page, lambdaQueryWrapper);
+			return getMpDataTable(iPage.getRecords(), iPage.getTotal());
+		} else {
+			List<Camera> list = cameraService.list(lambdaQueryWrapper);
+			return getDataTable(list);
+		}
+	}
+
+	/**
+	 * 新增【请填写功能名称】
+	 */
+	@GetMapping("/add")
+	public String add() {
+	    return prefixSB + "/add";
+	}
+
+	/**
+	 * 新增保存【请填写功能名称】
+	 */
+	@RequiresPermissions("config:camera:add")
+	@Log(title = "【请填写功能名称】", action = BusinessType.INSERT)
+	@PostMapping("/add")
+	@ResponseBody
+	public AjaxResult addSave(Camera camera) {
+		if(camera == null){
+			return AjaxResult.error("摄像头信息为空");
+		}
+		camera.setWarehouseCode(ShiroUtils.getWarehouseCode());
+		camera.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0));
+		camera.setIsEnable(0);
+		camera.setIsLocked(0);
+		return toAjax(cameraService.save(camera));
+	}
+
+	@GetMapping("/bindCamera/{id}")
+	public String bindCamera(@PathVariable("id") Integer id, ModelMap mmap)
+	{
+		mmap.put("camera", cameraService.getById(id));
+		return prefixSB + "/bindCamera";
+	}
+
+	@Log(title = "配置-摄像头设置", operating = "绑定摄像头", action = BusinessType.UPDATE)
+	@PostMapping("/bindUpdate")
+	@ResponseBody
+	public AjaxResult bindUpdate(Camera camera)
+	{
+		if(camera.getUseKey()==null){
+			return error("摄像头绑定失败!!!");
+		}
+		LambdaQueryWrapper<Camera> queryWrapper =  Wrappers.lambdaQuery();
+				queryWrapper.eq(StringUtils.isNotEmpty(camera.getUseKey()),Camera::getUseKey,camera.getUseKey());
+		Camera only = cameraService.getOne(queryWrapper);
+		if(only!=null){
+			return error(only.getBindName()+":已经被绑定【 "+only.getIp()+" 】请先解绑,在进行绑定!!");
+		}
+		camera.setIsEnable(1);
+		camera.setUseKey(camera.getUseKey());
+		if (cameraService.updateById(camera))
+		{
+			return success();
+		}
+		return error();
+	}
+
+
+	@GetMapping("/cameraReset/{id}")
+	public String resetPwd(@PathVariable("id") Integer id, ModelMap mmap)
+	{
+		mmap.put("camera", cameraService.getById(id));
+		return prefixSB + "/cameraReset";
+	}
+
+	@Log(title = "配置-摄像头设置", operating = "修改密码", action = BusinessType.UPDATE)
+	@PostMapping("/cameraReset")
+	@ResponseBody
+	public AjaxResult resetPwd(Camera camera)
+	{
+		boolean flag = cameraService.updateById(camera);
+		if (flag)
+		{
+			return success();
+		}
+		return error();
+	}
+
+	@Log(title = "配置-摄像头设置", operating = "解绑", action = BusinessType.UPDATE)
+	@PostMapping("/unBind/{id}")
+	@ResponseBody
+	public AjaxResult unBind(@PathVariable("id") Integer id)
+	{
+		Camera camera = cameraService.getById(id);
+		if(camera==null){
+			return error();
+		}
+		camera.setUseKey("");
+		camera.setBindName("");
+		camera.setIsEnable(0);
+		boolean flag = cameraService.updateById(camera);
+		if (flag)
+		{
+			return success();
+		}
+		return error();
+	}
+
+	/**
+	 * 修改【请填写功能名称】
+	 */
+	@GetMapping("/edit/{id}")
+	public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
+		Camera camera = cameraService.getById(id);
+		mmap.put("camera", camera);
+	    return prefixSB + "/edit";
+	}
+
+	/**
+	 * 修改保存【请填写功能名称】
+	 */
+	@RequiresPermissions("config:camera:edit")
+	@Log(title = "【请填写功能名称】", action = BusinessType.UPDATE)
+	@PostMapping("/edit")
+	@ResponseBody
+	public AjaxResult editSave(Camera camera) {
+		return toAjax(cameraService.updateById(camera));
+	}
+
+	/**
+	 * 删除【请填写功能名称】
+	 */
+	@RequiresPermissions("config:camera:remove")
+	@Log(title = "【请填写功能名称】", action = BusinessType.DELETE)
+	@PostMapping( "/remove")
+	@ResponseBody
+	public AjaxResult remove(String ids) {
+		if (StringUtils.isEmpty(ids)){
+			return AjaxResult.error("id不能为空");
+		}
+		return toAjax(cameraService.removeByIds(Arrays.asList(Convert.toIntArray(ids))));
+	}
+
+}
diff --git a/src/main/java/com/huaheng/pc/config/camera/domain/Camera.java b/src/main/java/com/huaheng/pc/config/camera/domain/Camera.java
new file mode 100644
index 0000000..76cb911
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/camera/domain/Camera.java
@@ -0,0 +1,57 @@
+package com.huaheng.pc.config.camera.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 【请填写功能名称】表 camera
+ * 
+ * @author huaheng
+ * @date 2022-05-23
+ */
+@ApiModel(value="com.huaheng.pc.config.camera.domain.Camera")
+@Data
+@TableName(value = "camera")
+public class Camera implements Serializable{
+	private static final long serialVersionUID = 1L;
+	
+        /** id */
+        @TableId(value = "id", type = IdType.AUTO)
+    	private Integer id;
+        /** 仓库编码 */
+        @TableField(value = "warehouseCode")
+    	private String warehouseCode;
+        /** 货主编码 */
+        @TableField(value = "companyCode")
+    	private String companyCode;
+        /** ip */
+        @TableField(value = "ip")
+    	private String ip;
+        /** 端口 */
+        @TableField(value = "port")
+    	private String port;
+        /** 登录名称 */
+        @TableField(value = "userName")
+    	private String userName;
+        /** 密码 */
+        @TableField(value = "password")
+    	private String password;
+        /** 使用标识 */
+        @TableField(value = "useKey")
+    	private String useKey;
+        /** 是否可用 */
+        @TableField(value = "isEnable")
+    	private Integer isEnable;
+        /** 状态 */
+        @TableField(value = "isLocked")
+    	private Integer isLocked;
+        /** 状态 */
+        @TableField(value = "bindName")
+        private String bindName;
+
+}
diff --git a/src/main/java/com/huaheng/pc/config/camera/mapper/CameraMapper.java b/src/main/java/com/huaheng/pc/config/camera/mapper/CameraMapper.java
new file mode 100644
index 0000000..11d5381
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/camera/mapper/CameraMapper.java
@@ -0,0 +1,17 @@
+package com.huaheng.pc.config.camera.mapper;
+
+import com.huaheng.pc.config.camera.domain.Camera;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * 【请填写功能名称】 数据层
+ * 
+ * @author huaheng
+ * @date 2022-05-23
+ */
+@Service
+public interface CameraMapper extends BaseMapper<Camera> {
+
+}
+	
diff --git a/src/main/java/com/huaheng/pc/config/camera/service/ICameraService.java b/src/main/java/com/huaheng/pc/config/camera/service/ICameraService.java
new file mode 100644
index 0000000..e0f3199
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/camera/service/ICameraService.java
@@ -0,0 +1,16 @@
+package com.huaheng.pc.config.camera.service;
+
+import com.huaheng.pc.config.camera.domain.Camera;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 【请填写功能名称】 服务层
+ * 
+ * @author huaheng
+ * @date 2022-05-23
+ */
+public interface ICameraService  extends IService<Camera> {
+
+}
+	
+
diff --git a/src/main/java/com/huaheng/pc/config/camera/service/impl/CameraServiceImpl.java b/src/main/java/com/huaheng/pc/config/camera/service/impl/CameraServiceImpl.java
new file mode 100644
index 0000000..9e8d5a7
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/camera/service/impl/CameraServiceImpl.java
@@ -0,0 +1,21 @@
+package com.huaheng.pc.config.camera.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.pc.config.camera.domain.Camera;
+import com.huaheng.pc.config.camera.mapper.CameraMapper;
+import com.huaheng.pc.config.camera.service.ICameraService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+
+/**
+ * 【请填写功能名称】 服务层实现
+ * 
+ * @author huaheng
+ * @date 2022-05-23
+ */
+@Service
+public class CameraServiceImpl extends ServiceImpl<CameraMapper, Camera> implements ICameraService {
+
+}
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java
index c990be4..3e641ca 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java
@@ -320,17 +320,17 @@ public class InventoryHeaderController extends BaseController
     }
     /**
      * 合托保存
-     * @param destContainerCode 原容器
-     * @param destContainerCode 目的容器
-     * detailIdList ,原容器下面的库存详情id
+     * @param orgLocationCode 原库位
+     * @param destLocationCode 目的库位
+     * detailIdList ,原库位下面的库存详情id
      * @return
      */
     @Log(title = "入库-入库单 ",operating = "修改入库单 ", action = BusinessType.UPDATE)
     @PostMapping("/conformContainerSave")
     @ResponseBody
-    public AjaxResult conformContainerSave(String orgContainerCode, String destContainerCode, String detailIdList)
+    public AjaxResult conformContainerSave(String orgLocationCode, String destLocationCode, String detailIdList)
     {
-        return inventoryHeaderService.conformContainerSave(orgContainerCode, destContainerCode,detailIdList);
+        return inventoryHeaderService.conformContainerSave(orgLocationCode, destLocationCode,detailIdList);
     }
 
 
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java
index 8e05f30..e657eed 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java
@@ -67,7 +67,7 @@ public interface InventoryHeaderService extends IService<InventoryHeader> {
 
     List<Integer> cycleCountInventoryHeader();
 
-    AjaxResult conformContainerSave(String orgContainerCode, String destContainerCode, String detailIdList);
+    AjaxResult conformContainerSave(String orgLocationCode, String destLocationCode, String detailIdList);
 
 }
 
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
index 3ec5aa6..b2d7b8b 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
@@ -447,27 +447,30 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
     /**
      * 合托,将原容器物料移到目的容器,可以整个容器全部移到目的容器,也可以其中一分部移动
      * 记录库存交易,判断明细不能是锁定状态(详情表锁状态没用到,暂时没判断)
-     * @param orgContainerCode 原容器
-     * @param destContainerCode 目的容器
+     * @param orgLocationCode 原容器
+     * @param destLocationCode 目的容器
      * @param detailIdList 库存详情id
      * @return
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public AjaxResult conformContainerSave(String orgContainerCode, String destContainerCode, String detailIdList) {
-        if(StringUtils.isEmpty(orgContainerCode)||StringUtils.isEmpty(destContainerCode)){
-            return AjaxResult.error("原容器,目的容器不能为空");
+    public AjaxResult conformContainerSave(String orgLocationCode, String destLocationCode, String detailIdList) {
+        if(StringUtils.isEmpty(orgLocationCode)||StringUtils.isEmpty(destLocationCode)){
+            return AjaxResult.error("原库位,目的库位不能为空");
         }
         // 判断原容器、目的容器是否存在库存里
-        InventoryHeader inventoryHeader=checkContainer(orgContainerCode);
-        InventoryHeader inventoryHeader1=checkContainer(destContainerCode);
+        InventoryHeader inventoryHeader=checkContainer(orgLocationCode);
+        InventoryHeader inventoryHeader1=checkContainer(destLocationCode);
         if(inventoryHeader==null){
-            return AjaxResult.error("原容器不存在库存");
+            return AjaxResult.error("原库位不存在库存");
         }
         if(inventoryHeader1==null){
-            return AjaxResult.error("目的容器不存在库存");
+            return AjaxResult.error("目的库位不存在库存");
+        }
+        if(inventoryHeader.getId().equals(inventoryHeader1.getId())){
+            return AjaxResult.error("目的库位库存不能和原库位库存同一个");
         }
-        List<InventoryDetail> list=getDetailByContainerCode(orgContainerCode);
+        List<InventoryDetail> list=getDetailByContainerCode(orgLocationCode);
         if(null==list||list.size()==0){
             return AjaxResult.error("原容器不存在库存");
         }
@@ -483,7 +486,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
                 for(int a=0;a<str.length;a++){
                     Integer detailid=Integer.valueOf(str[a]);
                     if(detail.getId().equals(detailid)){
-                        saveInvDetail(detail,destContainerCode,inventoryHeader1);
+                        saveInvDetail(detail,destLocationCode,inventoryHeader1);
                     }
                 }
             }
@@ -492,20 +495,20 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
             }
         }else{
             for (InventoryDetail detail:list){
-                saveInvDetail(detail,destContainerCode,inventoryHeader1);
+                saveInvDetail(detail,destLocationCode,inventoryHeader1);
             }
         }
         //修改库存主表
-        updateInventoryHeader(orgContainerCode);
-        updateInventoryHeader(destContainerCode);
+        updateInventoryHeader(orgLocationCode);
+        updateInventoryHeader(destLocationCode);
         return AjaxResult.success();
     }
     //保存库存交易表,修改库存详情
-    public void saveInvDetail(InventoryDetail detail,String destContainerCode,InventoryHeader inventoryHeader1){
+    public void saveInvDetail(InventoryDetail detail,String destLocationCode,InventoryHeader inventoryHeader1){
         //保存库存交易
         saveInventoryTransaction(detail,true);
-        detail.setContainerCode(destContainerCode);
-        detail.setLocationCode(inventoryHeader1.getLocationCode());
+        detail.setLocationCode(destLocationCode);
+        detail.setContainerCode(inventoryHeader1.getContainerCode());
         detail.setInventoryHeaderId(inventoryHeader1.getId());
         detail.setLastUpdated(new Date());
         detail.setLastUpdatedBy(ShiroUtils.getLoginName());
@@ -514,27 +517,27 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
         saveInventoryTransaction(detail,false);
     }
     //根据容器检查库存主表是否有数量
-    public InventoryHeader checkContainer(String orgContainerCode){
+    public InventoryHeader checkContainer(String orgLocationCode){
         boolean result=false;
         LambdaQueryWrapper<InventoryHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
-        lambdaQueryWrapper.eq(InventoryHeader::getContainerCode, orgContainerCode);
+        lambdaQueryWrapper.eq(InventoryHeader::getLocationCode, orgLocationCode);
         lambdaQueryWrapper.gt(InventoryHeader::getTotalQty,0);
         InventoryHeader inventoryHeader=this.getOne(lambdaQueryWrapper);
         return inventoryHeader;
     }
     //根据容器查询库存详情列表
-    public List<InventoryDetail> getDetailByContainerCode(String orgContainerCode){
+    public List<InventoryDetail> getDetailByContainerCode(String orgLocationCode){
         LambdaQueryWrapper<InventoryDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
-        lambdaQueryWrapper.eq(InventoryDetail::getContainerCode, orgContainerCode);
+        lambdaQueryWrapper.eq(InventoryDetail::getLocationCode, orgLocationCode);
         List<InventoryDetail> list=inventoryDetailService.list(lambdaQueryWrapper);
         return list;
     }
     //根据容器修改库存主表
-    public void updateInventoryHeader(String orgContainerCode){
-        List<InventoryDetail> list=getDetailByContainerCode(orgContainerCode);
+    public void updateInventoryHeader(String orgLocationCode){
+        List<InventoryDetail> list=getDetailByContainerCode(orgLocationCode);
         int qty=0;
         LambdaQueryWrapper<InventoryHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
-        lambdaQueryWrapper.eq(InventoryHeader::getContainerCode, orgContainerCode);
+        lambdaQueryWrapper.eq(InventoryHeader::getLocationCode, orgLocationCode);
         InventoryHeader inventoryHeader=this.getOne(lambdaQueryWrapper);
         if(list==null||list.size()==0){
             this.removeById(inventoryHeader);
diff --git a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
index 963a1ef..787311e 100644
--- a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
+++ b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
@@ -23,6 +23,9 @@ import com.huaheng.pc.barcode.barcodeDetail.service.BarCodeDetailService;
 import com.huaheng.pc.barcode.barcodeHeader.domain.BarCodeHeader;
 import com.huaheng.pc.barcode.barcodeHeader.service.BarCodeHeaderService;
 import com.huaheng.pc.config.address.service.AddressService;
+import com.huaheng.pc.config.camera.domain.Camera;
+import com.huaheng.pc.config.camera.service.ICameraService;
+import com.huaheng.pc.config.camera.service.impl.CameraServiceImpl;
 import com.huaheng.pc.config.company.service.CompanyService;
 import com.huaheng.pc.config.container.service.ContainerService;
 import com.huaheng.pc.config.location.domain.Location;
@@ -97,16 +100,10 @@ public class RyTask extends BaseController {
     @Resource
     private TaskHeaderService taskHeaderService;
     @Resource
-    private ContainerService containerService;
-    @Resource
     private LocationService locationService;
     @Resource
     private WcsscanbarcodeService wcsscanbarcodeService;
     @Resource
-    private CompanyService companyService;
-    @Resource
-    private IUserService userService;
-    @Resource
     private IApiLogService apiLogService;
     @Resource
     private ZoneService zoneService;
@@ -131,15 +128,13 @@ public class RyTask extends BaseController {
     @Resource
     private TaskDetailService taskDetailService;
     @Resource
-    private ReceiptContainerDetailService receiptContainerDetailService;
-    @Resource
     private ReceiptDetailService receiptDetailService;
     @Resource
-    private ShipmentContainerDetailService shipmentContainerDetailService;
-    @Resource
     private BarCodeHeaderService barCodeHeaderService;
     @Resource
     private BarCodeDetailService barCodeDetailService;
+    @Resource
+    private ICameraService cameraService;
 
     public static String camera1 = null;
     public static String camera2 = null;
@@ -542,18 +537,33 @@ public class RyTask extends BaseController {
     public AjaxResult loginCamera() {
         boolean flag= true;
         String msg = "成功";
-        if (StringUtils.isNull(RyTask.camera1) || StringUtils.isNull(RyTask.camera2)) {
-            LoginModule.init(disConnect, haveReConnect);
-            RyTask.camera1 = LoginModule.login("10.34.101.55", 37777, "admin", "hk999999");
-            if(camera1 == null){
-                return AjaxResult.toAjax(false).setData(ToolKits.getErrorCodePrint());
-            }
-            RyTask.camera2 = LoginModule.login("10.34.101.59", 37777, "admin", "hk999999");
-            if(camera2 == null){
-                return AjaxResult.toAjax(false).setData(ToolKits.getErrorCodePrint());
-            }
-            CapturePictureModule.setSnapRevCallBack(RyTask.m_CaptureReceiveCB);
+        LambdaQueryWrapper<Camera> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(Camera::getUseKey,"camera1");
+        Camera c1 = cameraService.getOne(queryWrapper);
+        String ip1 = c1.getIp();
+        String port1 = c1.getPort();
+        String userName1 = c1.getUserName();
+        String password1 = c1.getPassword();
+
+        LambdaQueryWrapper<Camera> queryWrapper2 = Wrappers.lambdaQuery();
+        queryWrapper2.eq(Camera::getUseKey,"camera2");
+        Camera c2 = cameraService.getOne(queryWrapper);
+        String ip2 = c2.getIp();
+        String port2 = c2.getPort();
+        String userName2 = c2.getUserName();
+        String password2 = c2.getPassword();
+
+        LoginModule.init(disConnect, haveReConnect);
+
+        RyTask.camera1 = LoginModule.login(ip1, Integer.valueOf(port1), userName1, password1);
+        if(RyTask.camera1 == null){
+            return AjaxResult.toAjax(false).setData(ToolKits.getErrorCodePrint());
+        }
+        RyTask.camera2 = LoginModule.login(ip2, Integer.valueOf(port2), userName2, password2);
+        if(camera2 == null){
+            return AjaxResult.toAjax(false).setData(ToolKits.getErrorCodePrint());
         }
+        CapturePictureModule.setSnapRevCallBack(RyTask.m_CaptureReceiveCB);
         return AjaxResult.success();
     }
 
diff --git a/src/main/resources/mybatis/config/CameraMapper.xml b/src/main/resources/mybatis/config/CameraMapper.xml
new file mode 100644
index 0000000..6cdcba8
--- /dev/null
+++ b/src/main/resources/mybatis/config/CameraMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaheng.pc.config.camera.mapper.CameraMapper">
+    
+    <resultMap type="com.huaheng.pc.config.camera.domain.Camera" id="cameraResult">
+        <result property="id"    column="id"    />
+        <result property="warehouseCode"    column="warehouseCode"    />
+        <result property="companyCode"    column="companyCode"    />
+        <result property="ip"    column="ip"    />
+        <result property="port"    column="port"    />
+        <result property="userName"    column="userName"    />
+        <result property="password"    column="password"    />
+        <result property="useKey"    column="useKey"    />
+        <result property="isEnable"    column="isEnable"    />
+        <result property="isLocked"    column="isLocked"    />
+        <result property="bindName"    column="bindName"    />
+    </resultMap>
+	<sql id="selectCameraVo">
+        select id, warehouseCode, companyCode, ip, port, userName, password, useKey, isEnable, isLocked,bindName from camera
+    </sql>
+    
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/config/camera/add.html b/src/main/resources/templates/config/camera/add.html
new file mode 100644
index 0000000..8a00e91
--- /dev/null
+++ b/src/main/resources/templates/config/camera/add.html
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org">
+<meta charset="utf-8">
+<head>
+    <th:block th:include="include :: header"/>
+                                                                                                                            </head>
+<body class="white-bg">
+<div class="wrapper wrapper-content animated fadeInRight ibox-content">
+    <form class="form-horizontal m" id="form-camera-add">
+        <div class="form-group">
+                            <label class="col-sm-3 control-label">ip
+                                :</label>
+                            <div class="col-sm-8">
+                                <input id="ip" name="ip" class="form-control" type="text">
+                            </div>
+                        </div>
+        <div class="form-group">
+                            <label class="col-sm-3 control-label">端口
+                                :</label>
+                            <div class="col-sm-8">
+                                <input id="port" name="port" class="form-control" type="text">
+                            </div>
+                        </div>
+        <div class="form-group">
+                            <label class="col-sm-3 control-label">登录名称
+                                :</label>
+                            <div class="col-sm-8">
+                                <input id="userName" name="userName" class="form-control" type="text">
+                            </div>
+                        </div>
+        <div class="form-group">
+                            <label class="col-sm-3 control-label">密码 :</label>
+                            <div class="col-sm-8">
+                                <input id="password" name="password" class="form-control" type="text">
+                            </div>
+                        </div>
+                    <div class="form-group">
+                        <div class="form-control-static col-sm-offset-9">
+                            <button type="submit" class="btn btn-primary">提交</button>
+                            <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
+                        </div>
+                    </div>
+    </form>
+</div>
+<th:block th:include="include :: footer"/>
+<script type="text/javascript">
+    var prefix = ctx + "config/camera"
+    function submitHandler() {
+        if ($.validate.form()) {
+            $.operate.save(prefix + "/add", $('#form-camera-add').serialize());
+        }
+    }
+    $("#form-camera-add").validate({
+        rules:{
+            ip:{
+                required:true,
+            },
+            port:{
+                required:true,
+            },
+            userName:{
+                required:true,
+            },
+            password:{
+                required:true,
+            },
+        },
+        submitHandler: function(form) {
+            $.ajax({
+                cache : true,
+                type : "POST",
+                url : ctx + "config/camera/add",
+                data : $('#form-camera-add').serialize(),
+                async : false,
+                error : function(request) {
+                    $.modal.alertError("请求失败!");
+                },
+                success : function(result) {
+                    setTimeout(function () {
+                        // 因为使用layui弹出  所以需要引用
+                        var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
+                        //
+                        parent.loadDetail();
+                        parent.layer.close(index); //再执行关闭
+                    }, 1000);
+                }
+            });
+        }
+    });
+                                                                                                                                                                                                                                </script>
+</body>
+</html>
diff --git a/src/main/resources/templates/config/camera/bindCamera.html b/src/main/resources/templates/config/camera/bindCamera.html
new file mode 100644
index 0000000..a62d531
--- /dev/null
+++ b/src/main/resources/templates/config/camera/bindCamera.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="white-bg">
+<div class="wrapper wrapper-content animated fadeInRight ibox-content">
+    <form class="form-horizontal m" id="form-camera-bindCamera">
+        <input id="id" name="id"  type="hidden"  th:value="${camera.id}" />
+        <div class="form-group">
+            <label class="col-sm-3 control-label ">摄像头IP:</label>
+            <div class="col-sm-8">
+                <input class="form-control" type="text" readonly="true" id="ip" name="ip" th:value="${camera.ip}"/>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">选择摄像头:</label>
+            <div class="col-sm-8">
+                <select id="useKey" name="useKey"  class="form-control"  th:with="firstStatus=${@dict.getType('cameraIp')}">
+                <option value="">请选择</option>
+                <option th:each="item : ${firstStatus}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}" th:attr = " code = ${item['dictValue']}"></option>
+            </select>
+
+            </div>
+        </div>
+        <div class="form-group">
+            <div class="form-control-static col-sm-offset-9">
+                <button type="submit" class="btn btn-primary">提交</button>
+                <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
+            </div>
+        </div>
+    </form>
+</div>
+<div th:include="include :: footer"></div>
+<script type="text/javascript">
+    $("#form-camera-bindCamera").validate({
+        submitHandler:function(form){
+            let url = ctx + "config/camera/bindUpdate";
+            let useKey = $("#useKey").val();
+            if(useKey==''){
+                $.modal.alertWarning("选择绑定摄像头后在提交!!!");
+                return false;
+            }
+            let data = {
+                "id":$("#id").val(),
+                "ip":$("#ip").val(),
+                "useKey":$("#useKey option:selected").val(),
+                "bindName":$("select[name='useKey']").find("option:selected").text(),
+            }
+            var config = {
+                url: url,
+                type: "post",
+                dataType: "json",
+                data: data,
+                success: function (result) {
+                    if(result.code==web_status.SUCCESS){
+                        layer.alert(result.msg, { icon: 1, closeBtn: 0 }, function () {
+                            var index = parent.layer.getFrameIndex(window.name);
+                            layer.close(index);
+                            parent.location.reload();
+                            parent.layer.close(index); //再执行关闭
+                        })
+                    }else{
+                        layer.alert(result.msg, { icon: 2, closeBtn: 0 }, function () {
+                            var index = parent.layer.getFrameIndex(window.name);
+                            layer.close(index);
+                            parent.location.reload();
+                            parent.layer.close(index); //再执行关闭
+                        })
+                    }
+
+                }
+            };
+            $.ajax(config)
+        }
+    });
+</script>
+</body>
+
+</html>
diff --git a/src/main/resources/templates/config/camera/camera.html b/src/main/resources/templates/config/camera/camera.html
new file mode 100644
index 0000000..b8f0447
--- /dev/null
+++ b/src/main/resources/templates/config/camera/camera.html
@@ -0,0 +1,212 @@
+<!DOCTYPE HTML>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="gray-bg">
+    <div class="container-div">
+		<div class="row">
+			<div class="col-sm-12 select-info">
+				<form id="formId">
+					<div class="select-list">
+						<ul>
+							<li>
+							<label>ip:</label>
+							<input type="text" name="ip"/>
+						</li>
+							<li>
+							<label>端口:</label>
+							<input type="text" name="port"/>
+						</li>
+							<li>
+							<label>登录名称:</label>
+							<input type="text" name="userName"/>
+						</li>
+							<li>
+							<label>使用标识:</label>
+							<input type="text" name="useKey" value=""/>
+						</li>
+							<li>
+							<label>是否可用:</label>
+							<input type="text" name="isEnable"/>
+						</li>
+						<li>
+							<label>状态:</label>
+							<input type="text" name="isLocked"/>
+						</li>
+							<li>
+								<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+								<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+							</li>
+						</ul>
+					</div>
+				</form>
+				<div class="btn-group hidden-xs" id="toolbar" role="group">
+					<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()">
+						<i class="fa fa-plus"></i> 新增
+					</a>
+					<a class="btn btn-outline btn-primary single disabled" onclick="$.operate.edit()">
+						<i class="fa fa-edit"></i> 修改
+					</a>
+					<a class="btn btn-outline btn-danger btn-rounded multiple disabled" onclick="$.operate.batRemove()" >
+						<i class="fa fa-trash-o"></i> 删除
+					</a>
+				</div>
+				<div class="col-sm-12 select-info table-striped tab-pane">
+					<table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover text-nowrap"></table>
+				</div>
+			</div>
+
+		</div>
+    </div>
+    <div th:include="include :: footer"></div>
+    <script th:inline="javascript">
+        var editFlag = [[${@permission.hasPermi('config:camera:edit')}]];
+		var removeFlag = [[${@permission.hasPermi('config:camera:remove')}]];
+        var prefix = ctx + "config/camera"
+		
+		function initFrame() {
+			$.ajax({
+				url:ctx + 'config/camera/list',
+				type:"post",
+				success:function (value) {
+					$('#bootstrap-table').bootstrapTable({
+						toolbar:"#toolbar",
+						data:value.data,
+						columns: value.total,
+					});
+				}
+			});
+		}
+		/*用户管理-重置密码*/
+		function resetPwd(id) {
+			var url = prefix + '/cameraReset/' + id;
+			$.modal.open("重置密码", url, '800', '300');
+		}
+
+		/*用户管理-重置密码*/
+		function bindCamera(id) {
+			var url = prefix + '/bindCamera/' + id;
+			$.modal.open("绑定摄像头", url, '800', '300');
+		}
+
+		function unBind(id) {
+			var url = prefix + '/unBind/' + id;
+			var config = {
+				url: url,
+				type: "post",
+				dataType: "json",
+				success: function (result) {
+					layer.alert(result.msg, { icon: 1, closeBtn: 0 }, function () {
+						location.reload();
+					})
+				}
+			};
+			$.ajax(config);
+		}
+
+        $(function() {
+            var options = {
+                url: prefix + "/list",
+                createUrl: prefix + "/add",
+                updateUrl: prefix + "/edit/{id}",
+                removeUrl: prefix + "/remove",
+                modalName: "【请填写功能名称】",
+                columns: [{
+		            checkbox: true
+		        },
+						{
+							field: 'id',
+							title: 'id',
+							visible: true
+						},
+						{
+							field: 'warehouseCode',
+							title: '仓库编码',
+							visible: false
+						},
+						{
+							field: 'companyCode',
+							title: '货主编码',
+							visible: false
+						},
+						{
+							field: 'ip',
+							title: 'ip',
+							align: 'center',
+						},
+						{
+							field: 'port',
+							title: '端口',
+							align: 'center',
+						},
+						{
+							field: 'userName',
+							title: '登录名称',
+							align: 'center',
+						},
+						{
+							field: 'password',
+							title: '密码',
+							visible: false
+						},
+						{
+							field: 'useKey',
+							title: '使用标识',
+							visible: false
+						},
+						{
+							field: 'isEnable',
+							title: '状态',
+							align: 'center',
+							formatter: function(value, row, index) {
+								if(value!=undefined){
+									if(value==0){
+										return '<span class="badge badge-info">空闲</span>'
+									}else if(value==1){
+										return '<span class="badge badge-danger">使用中</span>'
+									}
+								}
+								return '';
+							}
+						},
+						{
+							field: 'bindName',
+							title: '绑定名称',
+							align: 'center',
+						},
+						{
+							field: 'isLocked',
+							title: '锁定',
+							align: 'center',
+							formatter: function(value, row, index) {
+								if(value!=undefined){
+									if(value==0){
+										return '<span class="badge badge-info">正常</span>'
+									}else if(value==1){
+										return '<span class="badge badge-danger">锁定</span>'
+									}
+								}
+								return '';
+							}
+						},
+						{
+							title: '操作',
+							align: 'center',
+							formatter: function(value, row, index) {
+								var actions = [];
+								// actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+								actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>');
+								actions.push('<a class="btn btn-info btn-xs ' + removeFlag + '" href="#" onclick="resetPwd(\'' + row.id + '\')"><i class="fa fa-key"></i>修改密码</a>');
+								actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="bindCamera(\'' + row.id + '\')"><i class="fa fa-lock"></i>绑定摄像头</a>');
+								if (row.useKey != undefined && row.useKey != '' ){
+									actions.push('<a class="btn btn-primary btn-xs ' + removeFlag + '" href="#" onclick="unBind(\'' + row.id + '\')"><i class="fa fa-unlock"></i>解绑</a>');
+								}
+								return actions.join('');
+							}
+						}]
+            		};
+            $.table.init(options);
+        });
+    </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/config/camera/cameraReset.html b/src/main/resources/templates/config/camera/cameraReset.html
new file mode 100644
index 0000000..4fbc930
--- /dev/null
+++ b/src/main/resources/templates/config/camera/cameraReset.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="white-bg">
+<div class="wrapper wrapper-content animated fadeInRight ibox-content">
+    <form class="form-horizontal m" id="form-camera-cameraReset">
+        <input name="id"  type="hidden"  th:value="${camera.id}" />
+        <div class="form-group">
+            <label class="col-sm-3 control-label ">摄像头IP:</label>
+            <div class="col-sm-8">
+                <input class="form-control" type="text" readonly="true" name="ip" th:value="${camera.ip}"/>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">输入密码:</label>
+            <div class="col-sm-8">
+                <input class="form-control" type="password" name="password" id="password" value="123456">
+            </div>
+        </div>
+        <div class="form-group">
+            <div class="form-control-static col-sm-offset-9">
+                <button type="submit" class="btn btn-primary">提交</button>
+                <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
+            </div>
+        </div>
+    </form>
+</div>
+<div th:include="include :: footer"></div>
+<script type="text/javascript">
+    $("#form-camera-cameraReset").validate({
+        rules:{
+            password:{
+                required:true,
+                minlength: 5,
+                maxlength: 20
+            },
+        },
+        submitHandler:function(form){
+            let url = ctx + "config/camera/cameraReset";
+            let data = $('#form-camera-cameraReset').serialize();
+            $.modal.loading("正在处理中,请稍后...");
+            var config = {
+                url: url,
+                type: "post",
+                dataType: "json",
+                data: data,
+                success: function (result) {
+                    layer.alert(result.msg, { icon: 1, closeBtn: 0 }, function () {
+                        var index = parent.layer.getFrameIndex(window.name);
+                        layer.close(index);
+                        parent.layer.close(index); //再执行关闭
+                    })
+                }
+            };
+            $.ajax(config)
+        }
+
+    });
+</script>
+</body>
+
+</html>
diff --git a/src/main/resources/templates/config/camera/edit.html b/src/main/resources/templates/config/camera/edit.html
new file mode 100644
index 0000000..ce2dc48
--- /dev/null
+++ b/src/main/resources/templates/config/camera/edit.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+	<th:block th:include="include :: header" />
+																															</head>
+<body class="white-bg">
+<div class="wrapper wrapper-content animated fadeInRight ibox-content">
+	<form class="form-horizontal m" id="form-camera-edit" th:object="${camera}">
+		<input name="id" th:field="*{id}" type="hidden">
+		<input name="warehouseCode" th:field="*{warehouseCode}" class="form-control" type="hidden">
+		<input name="companyCode" th:field="*{companyCode}" class="form-control" type="hidden">
+		<div class="form-group">
+			<label class="col-sm-3 control-label">ip:</label>
+			<div class="col-sm-8">
+				<input name="ip" th:field="*{ip}" class="form-control" type="text">
+			</div>
+		</div>
+		<div class="form-group">
+			<label class="col-sm-3 control-label">端口:</label>
+			<div class="col-sm-8">
+				<input name="port" th:field="*{port}" class="form-control" type="text">
+			</div>
+		</div>
+		<div class="form-group">
+			<label class="col-sm-3 control-label">登录名称:</label>
+			<div class="col-sm-8">
+				<input name="userName" th:field="*{userName}" class="form-control" type="text">
+			</div>
+		</div>
+		<div class="form-group">
+			<label class="col-sm-3 control-label">密码:</label>
+			<div class="col-sm-8">
+				<input name="password" th:field="*{password}" class="form-control" type="password">
+			</div>
+		</div>
+		<div class="form-group">
+			<label class="col-sm-3 control-label">使用标识:</label>
+			<div class="col-sm-8">
+				<input name="useKey" th:field="*{useKey}" class="form-control" type="text">
+			</div>
+		</div>
+		<div class="form-group">
+			<label class="col-sm-3 control-label">是否可用:</label>
+			<div class="col-sm-8">
+				<input name="isEnable" th:field="*{isEnable}" class="form-control" type="text">
+			</div>
+		</div>
+		<div class="form-group">
+			<label class="col-sm-3 control-label">状态:</label>
+			<div class="col-sm-8">
+				<input name="isLocked" th:field="*{isLocked}" class="form-control" type="text">
+			</div>
+		</div>
+	</form>
+</div>
+<th:block th:include="include :: footer" />
+<script th:inline="javascript">
+	var prefix = ctx + "camera/camera";
+			$("#form-camera-edit").validate({
+		focusCleanup: true
+	});
+
+	function submitHandler() {
+		if ($.validate.form()) {
+			$.operate.save(prefix + "/edit", $('#form-camera-edit').serialize());
+		}
+	}
+																																																								</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/inventory/inventoryHeader/conformContainer.html b/src/main/resources/templates/inventory/inventoryHeader/conformContainer.html
index 68f5ec1..b462f02 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/conformContainer.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/conformContainer.html
@@ -5,20 +5,22 @@
 <body class="white-bg">
 <div class="wrapper wrapper-content animated fadeInRight ibox-content">
     <form class="form-horizontal m" id="form-task-emptyIn">
-        <span style="color:red;margin-left:25%">*如果不勾选明细,则默认该容器明细全部转移到目的容器</span>
+        <span style="color:red;margin-left:25%">*如果不勾选明细,则默认该库位明细全部转移到目的容器</span>
         <div class="form-group">
-            <label class="col-sm-3 control-label">原容器编码:</label>
+            <label class="col-sm-3 control-label">原库位编码:</label>
             <div class="col-sm-6">
-                <input id="orgContainerCode" name="orgContainerCode" class="form-control" type="text" >
+                <input id="orgLocationCode" name="orgLocationCode" class="form-control" type="text" >
+                <!--<input id="orgContainerCode" name="orgContainerCode" class="form-control" type="text" >-->
             </div>
             <input type="hidden" id="detailIdList" name="detailIdList">
             <button type="button" class="btn btn-primary" onclick="selectMaterial()">选取明细</button>
             <button type="button" class="btn btn-primary" onclick="clearSelect()">清空明细</button>
         </div>
         <div class="form-group">
-            <label class="col-sm-3 control-label">目的容器:</label>
+            <label class="col-sm-3 control-label">目的库位:</label>
             <div class="col-sm-8">
-                <input id="destContainerCode" name="destContainerCode" class="form-control" type="text" >
+                <input id="destLocationCode" name="destLocationCode" class="form-control" type="text">
+                <!--<input id="destContainerCode" name="destContainerCode" class="form-control" type="text">-->
             </div>
         </div>
         <div class="col-sm-12 select-info" id="selecttable" >
@@ -43,16 +45,16 @@
         $("#detailIdList").val('');
     }
     function selectMaterial(){
-        var orgContainerCode=$("#orgContainerCode").val();
-        if(orgContainerCode==''||orgContainerCode==undefined){
-            $.modal.alertError("请填写原容器编码");
+        var orgLocationCode=$("#orgLocationCode").val();
+        if(orgLocationCode==''||orgLocationCode==undefined){
+            $.modal.alertError("请填写原库位编码");
             return;
         }
         $.ajax({
             url:prefix + '/inventoryDetailLook',
             type:"post",
             data:{
-                "containerCode":orgContainerCode,
+                "locationCode":orgLocationCode,
             },
             success:function (value) {
                 console.log(value)
@@ -183,14 +185,14 @@
     $("#form-task-emptyIn").validate({
 
         submitHandler: function(form) {
-            var orgContainerCode=$("#orgContainerCode").val();
-            var destContainerCode=$("#destContainerCode").val();
-            if(orgContainerCode==''||destContainerCode==''){
-                $.modal.alertError("请填写原容器编码和目的容器编号");
+            var orgLocationCode=$("#orgLocationCode").val();
+            var destLocationCode=$("#destLocationCode").val();
+            if(orgLocationCode==''||destLocationCode==''){
+                $.modal.alertError("请填写原库位编码和目的库位编号");
                 return;
             }
             let rows =  $("#bootstrap-table").bootstrapTable('getSelections');
-            console.log(rows);
+            //console.log(rows);
             var ids = "";
             for (var i = 0; i<rows.length; i++){
                 ids += rows[i].id;
@@ -202,8 +204,8 @@
                 url:prefix_header + "/conformContainerSave",
                 type:"post",
                 data:{
-                    "orgContainerCode":orgContainerCode,
-                    "destContainerCode":destContainerCode,
+                    "orgLocationCode":orgLocationCode,
+                    "destLocationCode":destLocationCode,
                     "detailIdList":ids,
                 },
                 success:function (result) {