diff --git a/src/main/java/com/huaheng/api/acs/controller/StateInfoUp.java b/src/main/java/com/huaheng/api/acs/controller/StateInfoUp.java
new file mode 100644
index 0000000..af16f20
--- /dev/null
+++ b/src/main/java/com/huaheng/api/acs/controller/StateInfoUp.java
@@ -0,0 +1,36 @@
+package com.huaheng.api.acs.controller;
+
+import com.huaheng.api.acs.domain.StateInfoUploadModel;
+import com.huaheng.api.acs.service.AcsService;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+
+@RestController
+@RequestMapping("/api/ACS/v1")
+@Api(tags = {"ACS"}, description = "登陆接口")
+public class StateInfoUp extends BaseController {
+    @Resource
+    private AcsService acsService;
+
+    /**
+     * AGV 信息上传
+     */
+//    @RequiresPermissions("api:acs:StateInfoUpload")
+    @Log(title = "AGV 信息上传", action = BusinessType.INSERT)
+    @PostMapping("/StateInfoUpload")
+    @ApiOperation("AGV 信息上传接口")
+    @ResponseBody
+    public AjaxResult StateInfoUpload(@RequestBody StateInfoUploadModel model)
+    {
+        return acsService.StateInfoUpload(model);
+    }
+
+}
diff --git a/src/main/java/com/huaheng/api/acs/controller/TaskConfirm.java b/src/main/java/com/huaheng/api/acs/controller/TaskConfirm.java
new file mode 100644
index 0000000..b1136f1
--- /dev/null
+++ b/src/main/java/com/huaheng/api/acs/controller/TaskConfirm.java
@@ -0,0 +1,37 @@
+package com.huaheng.api.acs.controller;
+
+import com.huaheng.api.acs.domain.AgvTask;
+import com.huaheng.api.acs.service.AcsService;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+
+@RestController
+@RequestMapping("/api/ACS/v1")
+@Api(tags = {"ACS"}, description = "登陆接口")
+public class TaskConfirm extends BaseController {
+    @Resource
+    private AcsService acsService;
+
+    /**
+     * AGV 任务回传
+     */
+//    @RequiresPermissions("api:acs:TaskConfirm")
+    @Log(title = "AGV 任务回传", action = BusinessType.UPDATE)
+    @PostMapping("/TaskConfirm")
+    @ApiOperation("AGV 任务回传接口")
+    @ResponseBody
+    public AjaxResult TaskConfirm(@RequestBody AgvTask model)
+    {
+        return acsService.TaskConfirm(model);
+    }
+
+
+}
diff --git a/src/main/java/com/huaheng/api/acs/domain/AgvTask.java b/src/main/java/com/huaheng/api/acs/domain/AgvTask.java
new file mode 100644
index 0000000..dbe3150
--- /dev/null
+++ b/src/main/java/com/huaheng/api/acs/domain/AgvTask.java
@@ -0,0 +1,243 @@
+package com.huaheng.api.acs.domain;
+
+import com.huaheng.framework.web.domain.BaseEntity;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * AGV任务实体
+ *
+ */
+public class AgvTask extends BaseEntity {
+
+
+    private Integer id;
+    //交互标识
+    private String interactionId;
+    //任务头标识
+    private Integer taskHeaderId;
+    //任务子标识
+    private  Integer taskDetailId;
+    //任务类型
+    private String taskType;
+    //货架编码
+    private  String shelfNo;
+    //站台编码
+    private String station;
+    //源位置编码
+    private  String fromLocationNo;
+    //目的位置编码
+    private String toLocationNo;
+    //方向
+    private String orientation;
+    //平台
+    private String platform;
+    //小车编号
+    private  String carNo;
+    //状态
+    private String state;
+    //优先级
+    private Integer status;
+    //仓库ID
+    private Integer warehouseId;
+    //仓库编码
+    private String warehouseCode;
+    //货主ID
+    private Integer companyId;
+    //货主编码
+    private String companyCode;
+    //货主ID list
+    private List<Integer> companyIdList;
+    //货主list
+    private List<String> companyCodeList;
+
+    private Date date;
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public List<Integer> getCompanyIdList() {
+        return companyIdList;
+    }
+
+    public void setCompanyIdList(List<Integer> companyIdList) {
+        this.companyIdList = companyIdList;
+    }
+
+    public Integer getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(Integer warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
+    public String getWarehouseCode() {
+        return warehouseCode;
+    }
+
+    public void setWarehouseCode(String warehouseCode) {
+        this.warehouseCode = warehouseCode;
+    }
+
+    public Integer getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Integer companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getCompanyCode() {
+        return companyCode;
+    }
+
+    public void setCompanyCode(String companyCode) {
+        this.companyCode = companyCode;
+    }
+
+    public List<String> getCompanyCodeList() {
+        return companyCodeList;
+    }
+
+    public void setCompanyCodeList(List<String> companyCodeList) {
+        this.companyCodeList = companyCodeList;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getInteractionId() {
+        return interactionId;
+    }
+
+    public void setInteractionId(String interactionId) {
+        this.interactionId = interactionId;
+    }
+
+    public Integer getTaskHeaderId() {
+        return taskHeaderId;
+    }
+
+    public void setTaskHeaderId(Integer taskHeaderId) {
+        this.taskHeaderId = taskHeaderId;
+    }
+
+    public Integer getTaskDetailId() {
+        return taskDetailId;
+    }
+
+    public void setTaskDetailId(Integer taskDetailId) {
+        this.taskDetailId = taskDetailId;
+    }
+
+    public String getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(String taskType) {
+        this.taskType = taskType;
+    }
+
+    public String getShelfNo() {
+        return shelfNo;
+    }
+
+    public void setShelfNo(String shelfNo) {
+        this.shelfNo = shelfNo;
+    }
+
+    public String getStation() {
+        return station;
+    }
+
+    public void setStation(String station) {
+        this.station = station;
+    }
+
+    public String getFromLocationNo() {
+        return fromLocationNo;
+    }
+
+    public void setFromLocationNo(String fromLocationNo) {
+        this.fromLocationNo = fromLocationNo;
+    }
+
+    public String getToLocationNo() {
+        return toLocationNo;
+    }
+
+    public void setToLocationNo(String toLocationNo) {
+        this.toLocationNo = toLocationNo;
+    }
+
+    public String getOrientation() {
+        return orientation;
+    }
+
+    public void setOrientation(String orientation) {
+        this.orientation = orientation;
+    }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
+
+    public String getCarNo() {
+        return carNo;
+    }
+
+    public void setCarNo(String carNo) {
+        this.carNo = carNo;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    @Override
+    public String toString() {
+        return "AgvTask{" +
+                "id=" + id +
+                ", interactionId='" + interactionId + '\'' +
+                ", taskHeaderId=" + taskHeaderId +
+                ", taskDetailId=" + taskDetailId +
+                ", taskType='" + taskType + '\'' +
+                ", shelfNo='" + shelfNo + '\'' +
+                ", station='" + station + '\'' +
+                ", fromLocationNo='" + fromLocationNo + '\'' +
+                ", toLocationNo='" + toLocationNo + '\'' +
+                ", orientation='" + orientation + '\'' +
+                ", platform='" + platform + '\'' +
+                ", carNo='" + carNo + '\'' +
+                ", state='" + state + '\'' +
+                '}';
+    }
+}
diff --git a/src/main/java/com/huaheng/api/acs/domain/StateInfoUploadModel.java b/src/main/java/com/huaheng/api/acs/domain/StateInfoUploadModel.java
new file mode 100644
index 0000000..5f7fa99
--- /dev/null
+++ b/src/main/java/com/huaheng/api/acs/domain/StateInfoUploadModel.java
@@ -0,0 +1,161 @@
+package com.huaheng.api.acs.domain;
+
+import java.util.Date;
+
+/**
+ * 小车信息实体
+ *
+ */
+public class StateInfoUploadModel {
+
+    private String carNo;   // 小车编号,string(50),唯一 ,必填
+    private String interactionId;   // 交互标识,int,默认 0,必填"
+    private String taskType;   // 任务类型,string (50),putway 上架 pick 拣货,必填
+    private String shelfNo;   // 货架编码,string (50),默认 0,必填
+    private String station;   // 站台编码,string (50),默认 0,必填
+    private String currentLocationNo;   // 当前位置编码,string (50),默认 0 必填
+    private String fromLocationNo;   // 源位置编码,string (50),默认 0 必填
+    private String toLocationNo;   // 目的位置编码,string (50),默认 0 必填
+    private String orientation;   // 方向,string (50),N,S,E,W,必填
+    private Integer percentCapacity;   // 电量,int【0-100】,必填
+    private Integer exceptionFlag;   // 异常标志 0 正常 1 异常,int,默认 0 必填
+    private String state;   // 状态,string (50),0 空闲 1 预定 2 任务中 -1 充电,必填
+    private String exceptionInfo;   // 异常信息 string(200)
+    //仓库ID
+    private Integer warehouseId;
+    //仓库编码
+    private String warehouseCode;
+
+    private Date date;
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public Integer getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(Integer warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
+    public String getWarehouseCode() {
+        return warehouseCode;
+    }
+
+    public void setWarehouseCode(String warehouseCode) {
+        this.warehouseCode = warehouseCode;
+    }
+
+    public String getCarNo() {
+        return carNo;
+    }
+
+    public void setCarNo(String carNo) {
+        this.carNo = carNo;
+    }
+
+    public String getInteractionId() {
+        return interactionId;
+    }
+
+    public void setInteractionId(String interactionId) {
+        this.interactionId = interactionId;
+    }
+
+    public String getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(String taskType) {
+        this.taskType = taskType;
+    }
+
+    public String getShelfNo() {
+        return shelfNo;
+    }
+
+    public void setShelfNo(String shelfNo) {
+        this.shelfNo = shelfNo;
+    }
+
+    public String getStation() {
+        return station;
+    }
+
+    public void setStation(String station) {
+        this.station = station;
+    }
+
+    public String getCurrentLocationNo() {
+        return currentLocationNo;
+    }
+
+    public void setCurrentLocationNo(String currentLocationNo) {
+        this.currentLocationNo = currentLocationNo;
+    }
+
+    public String getFromLocationNo() {
+        return fromLocationNo;
+    }
+
+    public void setFromLocationNo(String fromLocationNo) {
+        this.fromLocationNo = fromLocationNo;
+    }
+
+    public String getToLocationNo() {
+        return toLocationNo;
+    }
+
+    public void setToLocationNo(String toLocationNo) {
+        this.toLocationNo = toLocationNo;
+    }
+
+    public String getOrientation() {
+        return orientation;
+    }
+
+    public void setOrientation(String orientation) {
+        this.orientation = orientation;
+    }
+
+    public Integer getPercentCapacity() {
+        return percentCapacity;
+    }
+
+    public void setPercentCapacity(Integer percentCapacity) {
+        this.percentCapacity = percentCapacity;
+    }
+
+    public Integer getExceptionFlag() {
+        return exceptionFlag;
+    }
+
+    public void setExceptionFlag(Integer exceptionFlag) {
+        this.exceptionFlag = exceptionFlag;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getExceptionInfo() {
+        return exceptionInfo;
+    }
+
+    public void setExceptionInfo(String exceptionInfo) {
+        this.exceptionInfo = exceptionInfo;
+    }
+
+
+
+}
diff --git a/src/main/java/com/huaheng/api/acs/service/AcsService.java b/src/main/java/com/huaheng/api/acs/service/AcsService.java
new file mode 100644
index 0000000..ce9bd92
--- /dev/null
+++ b/src/main/java/com/huaheng/api/acs/service/AcsService.java
@@ -0,0 +1,16 @@
+package com.huaheng.api.acs.service;
+
+import com.huaheng.api.acs.domain.AgvTask;
+import com.huaheng.api.acs.domain.StateInfoUploadModel;
+import com.huaheng.framework.web.domain.AjaxResult;
+
+public interface AcsService {
+
+
+    //AGV 信息上传
+    AjaxResult StateInfoUpload(StateInfoUploadModel model);
+
+
+    //AGV 任务回传
+    AjaxResult TaskConfirm(AgvTask agvTask);
+}
diff --git a/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java b/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java
new file mode 100644
index 0000000..ea85102
--- /dev/null
+++ b/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java
@@ -0,0 +1,25 @@
+package com.huaheng.api.acs.service;
+
+import com.huaheng.api.acs.domain.AgvTask;
+import com.huaheng.api.acs.domain.StateInfoUploadModel;
+import com.huaheng.framework.web.domain.AjaxResult;
+import org.springframework.stereotype.Service;
+
+/**
+ * @ClassName AcsServiceImpl
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/12/2615:38
+ */
+@Service
+public class AcsServiceImpl implements AcsService {
+    @Override
+    public AjaxResult StateInfoUpload(StateInfoUploadModel model) {
+        return null;
+    }
+
+    @Override
+    public AjaxResult TaskConfirm(AgvTask agvTask) {
+        return null;
+    }
+}
diff --git a/src/main/java/com/huaheng/common/constant/QuantityConstant.java b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
index 252a0fe..c5cfcd0 100644
--- a/src/main/java/com/huaheng/common/constant/QuantityConstant.java
+++ b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
@@ -348,5 +348,9 @@ public class QuantityConstant {
     //在库抽检
     public static final Integer CHECK_TYPE_SELECT = 300;
 
+    //空货架
+    public static final Integer POINTS_EMPTY = 0;
 
+    //非空货架
+    public static final Integer POINTS_SOME = 1;
 }
diff --git a/src/main/java/com/huaheng/pc/config/address/domain/Address.java b/src/main/java/com/huaheng/pc/config/address/domain/Address.java
index 5ee9376..bfc3157 100644
--- a/src/main/java/com/huaheng/pc/config/address/domain/Address.java
+++ b/src/main/java/com/huaheng/pc/config/address/domain/Address.java
@@ -33,6 +33,13 @@ public class Address implements Serializable {
     private String warehouseCode;
 
     /**
+     * 编号
+     */
+    @TableField(value = "number")
+    @ApiModelProperty(value="编号")
+    private Integer number;
+
+    /**
      * 参数
      */
     @TableField(value = "param")
@@ -62,6 +69,14 @@ public class Address implements Serializable {
         this.warehouseCode = warehouseCode;
     }
 
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
     public String getParam() {
         return param;
     }
diff --git a/src/main/java/com/huaheng/pc/config/container/domain/Container.java b/src/main/java/com/huaheng/pc/config/container/domain/Container.java
index 210358f..7a4e5c0 100644
--- a/src/main/java/com/huaheng/pc/config/container/domain/Container.java
+++ b/src/main/java/com/huaheng/pc/config/container/domain/Container.java
@@ -65,6 +65,15 @@ public class Container implements Serializable {
     @Excel(name = "容器类型")
     private String containerType;
 
+
+    /**
+     * 容器类型
+     */
+    @TableField(value = "goodsShelfNo")
+    @ApiModelProperty(value="AGV货架编码")
+    @Excel(name = "AGV货架编码")
+    private String goodsShelfNo;
+
     /**
      * 创建时间
      */
@@ -199,6 +208,8 @@ public class Container implements Serializable {
 
     public static final String COL_CONTAINERTYPE = "containerType";
 
+    public static final String COL_GOODSSHELFNO = "goodsShelfNo";
+
     public static final String COL_CREATED = "created";
 
     public static final String COL_CREATEDBY = "createdBy";
@@ -245,6 +256,7 @@ public class Container implements Serializable {
         sb.append(", warehouseCode=").append(warehouseCode);
         sb.append(", companyCode=").append(companyCode);
         sb.append(", containerType=").append(containerType);
+        sb.append(", goodsShelfNo=").append(goodsShelfNo);
         sb.append(", created=").append(created);
         sb.append(", createdBy=").append(createdBy);
         sb.append(", lastUpdated=").append(lastUpdated);
diff --git a/src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java b/src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java
index a3b11dc..b6dcc81 100644
--- a/src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java
+++ b/src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java
@@ -19,4 +19,6 @@ public interface ContainerMapper extends BaseMapper<Container> {
     int addList(@Param("containers") List<Container> containers);
 
 
+    //获得空货架编号
+    List<Container> selectListShelf();
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java b/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java
index 3bbed8d..86825c9 100644
--- a/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java
+++ b/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java
@@ -22,4 +22,8 @@ public interface ContainerService extends IService<Container>{
     void removeByCode(String containCode);
 
     Container findAllByCode(String containCode);
+
+
+    //获得空货架编号
+    List<Container> selectListShelf();
 }
diff --git a/src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java b/src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java
index b93eea7..0d08e35 100644
--- a/src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java
@@ -171,4 +171,10 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container
     public Container findAllByCode(String code) {
         return containerMapper.findAllByCode(code);
     }
+
+
+    @Override
+    public List<Container> selectListShelf() {
+        return containerMapper.selectListShelf();
+    }
 }
diff --git a/src/main/java/com/huaheng/pc/config/points/controller/PointController.java b/src/main/java/com/huaheng/pc/config/points/controller/PointController.java
new file mode 100644
index 0000000..c945480
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/points/controller/PointController.java
@@ -0,0 +1,158 @@
+package com.huaheng.pc.config.points.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.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.config.company.domain.Company;
+import com.huaheng.pc.config.company.service.CompanyService;
+import com.huaheng.pc.config.container.domain.Container;
+import com.huaheng.pc.config.container.service.ContainerService;
+import com.huaheng.pc.config.points.domain.Points;
+import com.huaheng.pc.config.points.service.PointsService;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 货架 信息操作处理
+ * 
+ * @author huaheng
+ * @date 2019-07-11
+ */
+@Controller
+@RequestMapping("/config/point")
+public class PointController extends BaseController
+{
+    private String prefix = "config/point";
+	
+	@Autowired
+	private PointsService pointsService;
+	@Autowired
+	private CompanyService companyService;
+	@Autowired
+	private ContainerService containerService;
+	
+	@RequiresPermissions("config:point:view")
+	@GetMapping()
+	public String point()
+	{
+	    return prefix + "/point";
+	}
+	
+	/**
+	 * 查询货架列表
+	 */
+	@RequiresPermissions("config:point:list")
+	@Log(title = "配置-货架设置", operating = "货架查看列表", action = BusinessType.GRANT)
+	@PostMapping("/list")
+	@ResponseBody
+	public TableDataInfo list(Points points)
+	{
+
+		LambdaQueryWrapper<Points> lambdaQueryWrapper = Wrappers.lambdaQuery();
+		PageDomain pageDomain = TableSupport.buildPageRequest();
+		Integer pageNum = pageDomain.getPageNum();
+		Integer pageSize = pageDomain.getPageSize();
+		lambdaQueryWrapper
+				.eq(StringUtils.isNotEmpty(points.getGoodsShelfNo()), Points::getGoodsShelfNo, points.getGoodsShelfNo())
+				.eq(StringUtils.isNotEmpty(points.getCompanyCode()),Points::getCompanyCode, points.getCompanyCode())
+				.eq(Points::getWarehouseCode, ShiroUtils.getWarehouseCode());
+
+		if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+			/*使用分页查询*/
+			Page<Points> page = new Page<>(pageNum, pageSize);
+			IPage<Points> iPage = pointsService.page(page, lambdaQueryWrapper);
+			return getMpDataTable(iPage.getRecords(), iPage.getTotal());
+		} else {
+			List<Points> list = pointsService.list(lambdaQueryWrapper);
+			list.forEach(t->{
+				LambdaQueryWrapper<Company> companyLamb = Wrappers.lambdaQuery();
+				companyLamb.eq(Company::getCode,t.getCompanyCode());
+				Company company= companyService.getOne(companyLamb);
+				if(company!=null) {
+					t.setCompanyName(company.getName());
+				}
+			});
+			return getDataTable(list);
+		}
+	}
+
+	/**
+	 * 修改货架
+	 */
+	@GetMapping("/edit/{id}")
+	public String edit(@PathVariable("id") Integer id, ModelMap mmap)
+	{
+
+		Points points = pointsService.getById(id);
+		mmap.put("points", points);
+	    return prefix + "/edit";
+	}
+	
+	/**
+	 * 修改保存货架
+	 */
+	@RequiresPermissions("config:point:edit")
+	@Log(title = "配置-货架设置", operating = "修改货架", action = BusinessType.UPDATE)
+	@PostMapping("/edit")
+	@ResponseBody
+	public AjaxResult editSave(Points points)
+	{
+		LambdaQueryWrapper<Container> containerLamb = Wrappers.lambdaQuery();
+		containerLamb.eq(Container::getGoodsShelfNo,points.getGoodsShelfNo())
+				.eq(Container::getWarehouseCode,ShiroUtils.getWarehouseCode());
+		List<Container> containerList=containerService.list(containerLamb);
+		for(Container item:containerList){
+			item.setCompanyCode(points.getCompanyCode());
+			if(containerService.saveOrUpdate(item) == false){
+				return AjaxResult.error("修改失败");
+			}
+		}
+		if(pointsService.saveOrUpdate(points) == false){
+			return AjaxResult.error("修改失败");
+		}
+		return AjaxResult.success("修改成功");
+	}
+
+
+	/**
+	 * 恢复货架状态
+	 */
+	@RequiresPermissions("config:point:edit")
+	@Log(title = "配置-货架设置", operating = "恢复货架状态", action = BusinessType.UPDATE)
+	@PostMapping("/restore")
+	@ResponseBody
+	public AjaxResult restore(){
+		if(pointsService.updateAll() >0){
+			return AjaxResult.success("货架状态恢复成功");
+		}else {
+			return AjaxResult.error("失败");
+		}
+	}
+
+	/**
+	 * 检测货架装货状态
+	 */
+	@RequiresPermissions("config:point:edit")
+	@Log(title = "配置-货架设置", operating = "检测货架装货状态", action = BusinessType.UPDATE)
+	@PostMapping("/detectShelf")
+	@ResponseBody
+	public AjaxResult detectShelf(){
+		return pointsService.detectShelf();
+	}
+}
diff --git a/src/main/java/com/huaheng/pc/config/points/domain/Points.java b/src/main/java/com/huaheng/pc/config/points/domain/Points.java
new file mode 100644
index 0000000..bd4e63e
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/points/domain/Points.java
@@ -0,0 +1,183 @@
+package com.huaheng.pc.config.points.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 com.huaheng.framework.web.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author ricard
+ * @time 2019/12/26
+ * 货架实体
+ */
+
+@ApiModel(value="com.huaheng.pc.config.points.domain.Points")
+@Data
+@TableName(value = "points")
+public class Points extends BaseEntity {
+    //id
+    @TableId(value = "id", type = IdType.AUTO )
+    private Integer id;
+
+    //仓库编码
+    @TableField(value = "warehouseCode")
+    private String warehouseCode;
+
+   //货架号
+   @TableField(value = "goodsShelfNo")
+    private String goodsShelfNo;
+    private Integer companyId;
+
+    //货主
+    @TableField(value = "companyCode")
+    private String companyCode;
+    //货主名称
+    private String companyName;
+
+    //货架调动次数
+    @TableField(value = "num")
+    private Integer num;
+
+    //是否为空
+    @TableField(value = "isEmpty")
+    private Integer isEmpty;
+
+    //是否可用
+    @TableField(value = "isEnable")
+    private Integer isEnable;
+
+    //货架状态
+    @TableField(value = "isLocked")
+    private Integer isLocked;
+
+    //回库后X轴位置
+    @TableField(value = "intX")
+    private String intX;
+
+    //回库后Y轴位置
+    @TableField(value = "intY")
+    private String intY;
+
+    //出库前x位置
+    @TableField(value = "oIntX")
+    private String oIntX;
+
+    //出库前Y位置
+    @TableField(value = "oIntY")
+    private String oIntY;
+
+    public Integer getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Integer companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getCompanyCode() {
+        return companyCode;
+    }
+
+    public void setCompanyCode(String companyCode) {
+        this.companyCode = companyCode;
+    }
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+
+    public String getoIntX() {
+        return oIntX;
+    }
+
+    public void setoIntX(String oIntX) {
+        this.oIntX = oIntX;
+    }
+
+    public String getoIntY() {
+        return oIntY;
+    }
+
+    public void setoIntY(String oIntY) {
+        this.oIntY = oIntY;
+    }
+
+    public String getWarehouseCode() {
+        return warehouseCode;
+    }
+
+    public void setWarehouseCode(String warehouseCode) {
+        this.warehouseCode = warehouseCode;
+    }
+
+    public String getIntX() {
+        return intX;
+    }
+
+    public void setIntX(String intX) {
+        this.intX = intX;
+    }
+
+    public String getIntY() {
+        return intY;
+    }
+
+    public void setIntY(String intY) {
+        this.intY = intY;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getGoodsShelfNo() {
+        return goodsShelfNo;
+    }
+
+    public void setGoodsShelfNo(String goodsShelfNo) {
+        this.goodsShelfNo = goodsShelfNo;
+    }
+
+    public Integer getIsEnable() {
+        return isEnable;
+    }
+
+    public void setIsEnable(Integer isEnable) {
+        this.isEnable = isEnable;
+    }
+
+    public Integer getIsLocked() {
+        return isLocked;
+    }
+
+    public void setIsLocked(Integer isLocked) {
+        this.isLocked = isLocked;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public Integer getIsEmpty() {
+        return isEmpty;
+    }
+
+    public void setIsEmpty(Integer isEmpty) {
+        this.isEmpty = isEmpty;
+    }
+}
diff --git a/src/main/java/com/huaheng/pc/config/points/mapper/PointsMapper.java b/src/main/java/com/huaheng/pc/config/points/mapper/PointsMapper.java
new file mode 100644
index 0000000..d0387d3
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/points/mapper/PointsMapper.java
@@ -0,0 +1,25 @@
+package com.huaheng.pc.config.points.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaheng.pc.config.points.domain.Points;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 货架 数据层
+ *
+ * @author ricard
+ * @date 2019-12-26
+ */
+public interface PointsMapper extends BaseMapper<Points> {
+
+    //修改货架位置信息
+    int updatePoints(Points points);
+
+    //修改所有货架的状态为初始状态
+    int updateAll();
+
+    int updateIsEmpty(@Param("list") List<String> list, @Param("isEmpty") Integer isEmpty);
+}
diff --git a/src/main/java/com/huaheng/pc/config/points/service/PointsService.java b/src/main/java/com/huaheng/pc/config/points/service/PointsService.java
new file mode 100644
index 0000000..40af2f5
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/points/service/PointsService.java
@@ -0,0 +1,26 @@
+package com.huaheng.pc.config.points.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.config.points.domain.Points;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 货架 服务层
+ *
+ * @author ricard
+ * @date 2019-02-26
+ */
+
+public interface PointsService extends IService<Points> {
+
+    //修改所有货架的状态为初始状态
+    int updateAll();
+
+    //检查货架是否是空货架,并修改
+    AjaxResult detectShelf();
+
+}
diff --git a/src/main/java/com/huaheng/pc/config/points/service/PointsServiceImpl.java b/src/main/java/com/huaheng/pc/config/points/service/PointsServiceImpl.java
new file mode 100644
index 0000000..c86e7ba
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/points/service/PointsServiceImpl.java
@@ -0,0 +1,81 @@
+package com.huaheng.pc.config.points.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.common.constant.QuantityConstant;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.config.container.domain.Container;
+import com.huaheng.pc.config.container.service.ContainerService;
+import com.huaheng.pc.config.points.domain.Points;
+import com.huaheng.pc.config.points.mapper.PointsMapper;
+import org.apache.commons.collections.ListUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 货架 服务层实现
+ *
+ * @author ricard
+ * @date 2019-12-26
+ */
+@Service
+public class PointsServiceImpl extends ServiceImpl<PointsMapper,Points> implements PointsService{
+
+    @Resource
+    private PointsMapper pointsMapper;
+    @Resource
+    private ContainerService containerService;
+
+    @Override
+    public int updateAll() {
+        return pointsMapper.updateAll();
+    }
+
+
+
+    @Override
+    public AjaxResult detectShelf() {
+        //查找为空的货架
+        List<Container> containers =containerService.selectListShelf();
+        List<String> stringList = new ArrayList<>();
+        for(Container item : containers){
+            stringList.add(item.getGoodsShelfNo());
+        }
+        Integer flag = 1;
+
+        //修改空货架状态
+        flag = pointsMapper.updateIsEmpty(stringList, QuantityConstant.POINTS_SOME);
+        if(flag < 1){
+            return AjaxResult.error("修改空货架状态失败");
+        }
+
+
+        //查找所以货架
+        LambdaQueryWrapper<Points> pointsLamb = Wrappers.lambdaQuery();
+        pointsLamb.eq(Points::getWarehouseCode,ShiroUtils.getWarehouseCode());
+        List<Points> pointsList = this.list(pointsLamb);
+
+        //去重
+        List<String> list =new ArrayList<>();
+        for(Points item : pointsList){
+            list.add(item.getGoodsShelfNo());
+        }
+
+        List<String> list1 = ListUtils.subtract(list,stringList);
+
+        //修改非空货架
+        flag = pointsMapper.updateIsEmpty(list1,QuantityConstant.POINTS_EMPTY);
+        if(flag < 1){
+            return AjaxResult.error("修改空货架状态失败");
+        }
+
+        return AjaxResult.success("成功");
+    }
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java b/src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java
index 46c3106..b9518af 100644
--- a/src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java
+++ b/src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java
@@ -19,6 +19,8 @@ import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailServiceImpl;
 import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
 import com.huaheng.pc.shipment.shippingCombination.service.ShippingCombinationService;
+import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
+import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -46,6 +48,8 @@ public class ShippingCombinationController extends BaseController {
     ShipmentHeaderService shipmentHeaderService;
     @Autowired
     ShipmentPreferenceService shipmentPreferenceService;
+    @Autowired
+    TaskHeaderService taskHeaderService;
 
 
     /**
diff --git a/src/main/resources/mybatis/config/AddressMapper.xml b/src/main/resources/mybatis/config/AddressMapper.xml
index 6d76e05..20b9b48 100644
--- a/src/main/resources/mybatis/config/AddressMapper.xml
+++ b/src/main/resources/mybatis/config/AddressMapper.xml
@@ -5,11 +5,12 @@
     <!--@mbg.generated-->
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+    <result column="number" jdbcType="INTEGER" property="number" />
     <result column="param" jdbcType="VARCHAR" property="param" />
     <result column="url" jdbcType="VARCHAR" property="url" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, warehouseCode, param,url
+    id, warehouseCode,number, param,url
   </sql>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/config/ContainerMapper.xml b/src/main/resources/mybatis/config/ContainerMapper.xml
index db19354..886541a 100644
--- a/src/main/resources/mybatis/config/ContainerMapper.xml
+++ b/src/main/resources/mybatis/config/ContainerMapper.xml
@@ -78,4 +78,13 @@
             )
         </foreach>
     </insert>
+
+    <select id="selectListShelf" resultType="com.huaheng.pc.config.container.domain.Container">
+    SELECT
+	g.goodsShelfNo
+    FROM
+	( SELECT DISTINCT ( goodsShelfNo ) goodsShelfNo, COUNT( * ) cunt FROM container WHERE `status` = 'empty' AND type = 'A' GROUP BY goodsShelfNo ) g
+	INNER JOIN ( SELECT DISTINCT ( goodsShelfNo ) goodsShelfNo, COUNT( * ) cunt FROM container WHERE type = 'A' GROUP BY goodsShelfNo ) s ON g.goodsShelfNo = s.goodsShelfNo
+	AND g.cunt = s.cunt
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/config/PointsMapper.xml b/src/main/resources/mybatis/config/PointsMapper.xml
new file mode 100644
index 0000000..ee036d5
--- /dev/null
+++ b/src/main/resources/mybatis/config/PointsMapper.xml
@@ -0,0 +1,65 @@
+<?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.points.mapper.PointsMapper">
+    <resultMap id="BaseResultMap" type="com.huaheng.pc.config.points.domain.Points">
+        <!--@mbg.generated-->
+        <id column="id" jdbcType="INTEGER" property="id" />
+        <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+        <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
+        <result column="goodsShelfNo" jdbcType="VARCHAR" property="goodsShelfNo" />
+        <result column="intX" jdbcType="VARCHAR" property="intX" />
+        <result column="intY" jdbcType="VARCHAR" property="intY" />
+        <result column="oIntX" jdbcType="VARCHAR" property="oIntX" />
+        <result column="oIntY" jdbcType="VARCHAR" property="oIntY" />
+        <result column="num" jdbcType="INTEGER" property="num" />
+        <result column="isEmpty" jdbcType="INTEGER" property="isEmpty" />
+        <result column="isEnable" jdbcType="INTEGER" property="isEnable" />
+        <result column="isLocked" jdbcType="INTEGER" property="isLocked" />
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        warehouseCode,companyCode,goodsShelfNo,intX,intY,oIntX,oIntY,num,isEmpty,isEnable,isLocked
+    </sql>
+
+
+    <update id="updatePoints">
+         UPDATE points
+         <set>
+        <if test="isLocked != null">
+            isLocked = #{isLocked, jdbcType=INTEGER},
+        </if>
+        <if test="intX != null">
+            intX = #{intX, jdbcType=VARCHAR},
+        </if>
+        <if test="intY != null">
+            intY = #{intY, jdbcType=VARCHAR},
+        </if>
+        <if test="oIntX != null">
+            oIntX = #{oIntX, jdbcType=VARCHAR},
+        </if>
+        <if test="oIntY != null">
+              oIntY = #{oIntY, jdbcType=VARCHAR},
+        </if>
+        <if test="num != null">
+            num = #{num, jdbcType=INTEGER},
+        </if>
+        </set>
+        where goodsShelfNo=#{goodsShelfNo} and warehouseCode=#{warehouseCode}
+    </update>
+
+
+
+    <update id="updateAll">
+        update points set isLocked = 0
+    </update>
+
+
+    <update id="updateIsEmpty">
+        update points set isEmpty = #{isEmpty}
+        WHERE goodsShelfNo IN
+        <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+
+    </update>
+</mapper> 
\ No newline at end of file
diff --git a/src/main/resources/static/huaheng.png b/src/main/resources/static/huaheng.png
index 3c66d7f..463550d 100644
--- a/src/main/resources/static/huaheng.png
+++ b/src/main/resources/static/huaheng.png
diff --git a/src/main/resources/templates/config/point/edit.html b/src/main/resources/templates/config/point/edit.html
new file mode 100644
index 0000000..1f60a90
--- /dev/null
+++ b/src/main/resources/templates/config/point/edit.html
@@ -0,0 +1,69 @@
+<!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-zone-edit">
+        <div class="form-group">
+            <label class="col-sm-3 control-label">货架号:</label>
+            <div class="col-sm-8">
+                <input id="goodsShelfNo" name="goodsShelfNo" class="form-control" type="text">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">货主:</label>
+            <div class="col-sm-8">
+                <select id="companyCode" name="companyCode" class="form-control" th:with="list=${@company.selectCompanyByCurrentUserId()}">
+                    <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['code']}" th:attr = " code = ${item['code']}"></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">
+    let prefix = ctx + "config/point";
+    $("#form-zone-edit").validate({
+        rules:{
+            XX:{
+                required:true,
+            },
+        },
+        submitHandler: function(form) {
+            let tableValue = $.common.getTableValue("#form-zone-edit");
+            $.operate.save(prefix + "/edit", tableValue);
+        }
+    });
+
+    $(function () {
+        $("#goodsShelfNo").val(window.parent.goodsShelfNos);
+        $("select[name='companyCode']").change(function (e) {
+            let companyCode=$("select[name='companyCode'] option:selected").attr('code');
+            $.ajax({
+                url: ctx + "receipt/receiptHeader/getwarehouse",
+                type:'post',
+                data:{code:companyCode},
+                success:function (response) {
+                    if(response.code===200){
+                        $("select[name='uWarehouseCode']").children().remove();
+                        $("select[name='uWarehouseCode']").append(`<option value="">所有</option>`);
+                        for (let item of response.data) {
+                            let option=`<option value="${item.uWarehouseCode}">${item.uWarehouseName}</option>`;
+                            $("select[name='uWarehouseCode']").append(option);
+                        }
+                    }
+                    else {$.modal.msgError(response.msg)}
+                }
+            })
+        })
+    })
+</script>
+</body>
+</html>
diff --git a/src/main/resources/templates/config/point/point.html b/src/main/resources/templates/config/point/point.html
new file mode 100644
index 0000000..b05ea27
--- /dev/null
+++ b/src/main/resources/templates/config/point/point.html
@@ -0,0 +1,145 @@
+<!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="zone-form">
+                <div class="select-list">
+                    <ul>
+                        <li>
+                            货架号:<input type="text" id="goodsShelfNo" name="goodsShelfNo"/>
+                        </li>
+                        <li>
+                            货主:<select name="companyCode" th:with="company=${@company.getEnableCompanyList()}">
+                            <option value="">所有</option>
+                            <option th:each="e : ${company}" th:text="${e['name']}" th:value="${e['code']}"></option></select>
+                        </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('zone-form')"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+                        </li>
+                    </ul>
+                </div>
+            </form>
+        </div>
+
+        <!--<div class="btn-group hidden-xs" id="toolbar" role="group">-->
+            <!--<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="config:zone:add">-->
+                <!--<i class="fa fa-plus"></i> 新增-->
+            <!--</a>-->
+            <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="config:zone:remove">-->
+                <!--<i class="fa fa-trash-o"></i> 删除-->
+            <!--</a>-->
+        <!--</div>-->
+
+        <div class="col-sm-12 select-info">
+            <a class="btn btn-outline btn-primary btn-rounded to-receive"  onclick="restore()">
+                <i class="fa fa-paper-plane"></i> 状态恢复
+            </a>
+            <a class="btn btn-outline btn-primary btn-rounded to-receive"  onclick="detectShelf()">
+                <i class="fa fa-paper-plane"></i> 检测空货架
+            </a>
+            <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table>
+        </div>
+    </div>
+</div>
+<div th:include="include :: footer"></div>
+<script th:inline="javascript">
+    var prefix = ctx + "config/point";
+    var goodsShelfNos=null;
+    $(function() {
+        let options = {
+            url: prefix + "/list",
+            createUrl: prefix + "/add",
+            updateUrl: prefix + "/edit/{id}",
+            removeUrl: prefix + "/remove",
+            modalName: "货架",
+            search: false,
+            columns: [
+                // {
+                // checkbox: true
+                // },
+                {
+                    field : 'goodsShelfNo',
+                    title : '货架号',
+                    sortable:true
+                },
+                {
+                    field : 'companyName',
+                    title : '货主名称',
+                    sortable:true
+                },
+                {
+                    field : 'isEmpty',
+                    title : '是否空货架',
+                    sortable:true,
+                    formatter: function (value, item, index) {
+                        if (value==true) {
+                            return '<span class="badge" style="background-color: #00B83F;color: white;width: 36px;">' + ' 是 ' + '</span>';
+                        }
+                        else if (value==false) {
+                            return '<span class="badge" style="background-color: #ff0000;color: white;width: 36px;">' + ' 否 ' + '</span>';
+                        }
+                    }
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    formatter: function(value, row, index) {
+                        let actions = [];
+                        actions.push('<a class="btn btn-success btn-xs" onclick="Edit(\'' + row.id + '\' , \'' + row.goodsShelfNo + '\' )"><i class="fa fa-edit"></i>编辑</a> ');
+                        return actions.join('');
+                    }
+                }
+            ]
+        };
+        $.table.init(options);
+    });
+
+    function Edit(id, code) {
+        goodsShelfNos=code;
+        $.operate.edit(id)
+    }
+
+    /* 恢复 */
+    function restore() {
+        $.ajax({
+            url:prefix+'/restore',
+            type:'post',
+            success:function (res) {
+                if(res.code==200){
+                    $.table.refresh();
+                    $.modal.msgSuccess(res.msg);
+                }
+                else{
+                    $.modal.msgError(res.msg);
+                }
+            }
+        })
+    }
+
+
+
+    /* 检测货架装货状态 */
+    function detectShelf() {
+        $.ajax({
+            url:prefix+'/detectShelf',
+            type:'post',
+            success:function (res) {
+                if(res.code==200){
+                    $.table.refresh();
+                    $.modal.msgSuccess(res.msg);
+                }
+                else{
+                    $.modal.msgError(res.msg);
+                }
+            }
+        })
+    }
+
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index 4163164..44a297d 100644
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -4,9 +4,9 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta name="renderer" content="webkit">
-    <title>政田WMS管理系统首页</title>
-    <meta name="keywords" content="政田WMS管理系统首页">
-    <meta name="description" content="政田WMS管理系统首页">
+    <title>华恒WMS管理系统首页</title>
+    <meta name="keywords" content="华恒WMS管理系统首页">
+    <meta name="description" content="华恒WMS管理系统首页">
     <!--[if lt IE 9]>
     <meta http-equiv="refresh" content="0;ie.html"/>
     <![endif]-->
@@ -31,7 +31,7 @@
                 <li class="nav-header">
                     <div class="dropdown profile-element">
                          <span class="pull-left" style="padding-right: 10px;">
-                            <img th:src="(${user.avatar} == '') ? 'img/profiles.jpg' : 'profile/' + ${user.avatar}" alt="image" class="img-circle" height="45" width="45"/>
+                            <img th:src="(${user.avatar} == '') ? 'img/profile.jpg' : 'profile/' + ${user.avatar}" alt="image" class="img-circle" height="45" width="45"/>
                          </span>
                          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                           <span class="pull-left clear">
diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html
index a2e7a0b..2f617f9 100644
--- a/src/main/resources/templates/login.html
+++ b/src/main/resources/templates/login.html
@@ -4,8 +4,8 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
 
-    <title>政田WMS仓库管理系统 - 登录</title>
-    <meta name="keywords" content="政田WMS管理系统">
+    <title>华恒WMS仓库管理系统 - 登录</title>
+    <meta name="keywords" content="华恒WMS管理系统">
     <meta name="description" content="huaheng">
     <link href="../static/css/bootstrap.min.css" th:href="@{css/bootstrap.min.css}" rel="stylesheet"/>
     <link href="../static/css/font-awesome.css" th:href="@{css/font-awesome.css}" rel="stylesheet"/>
@@ -38,7 +38,7 @@
                     <h1><img alt="[ 华恒 ]" src="../static/huaheng.png" th:src="@{/huaheng.png}"></h1>
                 </div>
                 <div class="m-b"></div>
-                <h4>欢迎使用政田WMS仓库管理系统_v2.0</h4>
+                <h4>欢迎使用华恒WMS仓库管理系统_v2.0</h4>
                 <!--<ul class="m-b">-->
                     <!--<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> SpringBoot</li>-->
                     <!--<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Mybatis</li>-->
diff --git a/src/main/resources/templates/system/user/edit.html b/src/main/resources/templates/system/user/edit.html
index 3c52036..ccd7e3f 100644
--- a/src/main/resources/templates/system/user/edit.html
+++ b/src/main/resources/templates/system/user/edit.html
@@ -58,14 +58,14 @@
                      </div>
 				</div>
 			</div>
-			<div class="form-group">
-				<label class="col-sm-3 control-label">货主:</label>
-				<div class="col-sm-8">
-					<label th:each="company:${companys}" class="checkbox-inline i-checks">
-						<input name="company" type="checkbox" th:value="${company.id}" th:text=" ${company.name}" th:checked="${company.flag}" >
-					</label>
-				</div>
-			</div>
+			<!--<div class="form-group">-->
+				<!--<label class="col-sm-3 control-label">货主:</label>-->
+				<!--<div class="col-sm-8">-->
+					<!--<label th:each="company:${companys}" class="checkbox-inline i-checks">-->
+						<!--<input name="company" type="checkbox" th:value="${company.id}" th:text=" ${company.name}" th:checked="${company.flag}" >-->
+					<!--</label>-->
+				<!--</div>-->
+			<!--</div>-->
 
 			<div class="form-group">
 				<label class="col-sm-3 control-label">仓库:</label>
diff --git a/src/main/resources/templates/system/user/profile/profile.html b/src/main/resources/templates/system/user/profile/profile.html
index 37892d7..aaaee57 100644
--- a/src/main/resources/templates/system/user/profile/profile.html
+++ b/src/main/resources/templates/system/user/profile/profile.html
@@ -35,7 +35,7 @@
                     <div class="contact-box">
 	                        <div class="col-sm-4">
 	                            <div class="text-center">
-	                                <img alt="image" class="img-circle m-t-xs img-responsive" th:src="(${user.avatar} == '') ? '../../img/profiles.jpg' : '/profile/' + ${user.avatar}">
+	                                <img alt="image" class="img-circle m-t-xs img-responsive" th:src="(${user.avatar} == '') ? '../../img/profile.jpg' : '/profile/' + ${user.avatar}">
 	                                <div class="m-t-xs font-bold">[[${user.loginIp}]]</div>
 	                            </div>
 	                        </div>