LocationController.java 7.02 KB
package com.huaheng.pc.general.location.controller;

import com.huaheng.common.support.Convert;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.pc.general.material.domain.Material;
import com.huaheng.pc.inventory.inventory.domain.Inventory;
import com.huaheng.pc.task.task.service.ITaskService;
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.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.general.location.domain.Location;
import com.huaheng.pc.general.location.service.ILocationService;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.page.TableDataInfo;

import java.util.ArrayList;
import java.util.List;

/**
 * 库位 信息操作处理
 * 
 * @author huaheng
 * @date 2018-08-19
 */
@Controller
@RequestMapping("/general/location")
public class LocationController extends BaseController
{
    private String prefix = "general/location";
	
	@Autowired
	private ILocationService locationService;
    @Autowired
    private ITaskService iTaskService;


	@RequiresPermissions("general:location:view")
	@GetMapping()
	public String location()
	{
	    return prefix + "/location";
	}
	
	/**
	 * 查询库位列表
	 */
	@RequiresPermissions("general:location:list")
	@Log(title = "通用-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
	@PostMapping("/list")
	@ResponseBody
	public TableDataInfo list(Location location)  {
        location.setWarehouseId(ShiroUtils.getWarehouseId());
        location.setDeleted(false);
		startPage();
		List<Location> list = locationService.selectListEntityByLike(location) ;
		return getDataTable(list);
	}
	
	/**
	 * 新增库位
	 */
	@GetMapping("/add")
	public String add()
	{
		return prefix + "/add";
	}

	/**
	 * 新增保存库位
	 */
	@RequiresPermissions("general:location:add")
	@Log(title = "通用-库位管理", operating = "新增库位", action = BusinessType.INSERT)
	@PostMapping("/add")
	@ResponseBody
	public AjaxResult addSave(Location location)  {
        Boolean result = locationService.insertLocation(location);
		return toAjax(result);
	}

	/**
	 * 批量新增库位
	 */
	@GetMapping("/addBatch")
	public String addBatch()
	{
		return prefix + "/addBatch";
	}

	/**
	 * 批量新增保存库位
	 */
	@RequiresPermissions("general:location:add")
	@Log(title = "通用-库位管理", operating = "新增库位", action = BusinessType.INSERT)
	@PostMapping("/addBatchSave")
	@ResponseBody
	public AjaxResult addBatchSave(Location lastLocation)  {
	    for (int i=1; i<=lastLocation.getRow().intValue(); i++)  {
            for (int j=1; j<=lastLocation.getLine().intValue(); j++)  {
                for (int k=1; k<=lastLocation.getLayer().intValue(); k++)  {
                    for (int m=1; m<=lastLocation.getGrid().intValue(); m++)  {
                        //Integer roadway = (j / 2) + 1;
                        Location location = new Location();
                        location.setRow(i);
                        location.setLine(j);
                        location.setLayer(k);
                        location.setGrid(m);
                        location.setZoneId(lastLocation.getZoneId());
                        location.setZoneCode(lastLocation.getZoneCode());
                        location.setType(lastLocation.getType());
                        location.setRoadway(lastLocation.getRoadway());
                        location.setEnable(lastLocation.getEnable());
                        locationService.insertLocation(location);
                    }
                }
            }
        }
        return  AjaxResult.success("");
	}

	/**
	 * 修改库位
	 */
	@GetMapping("/edit/{id}")
	public String edit(@PathVariable("id") Integer id, ModelMap mmap)
	{
		Location location = locationService.selectEntityById(id);
		mmap.put("location", location);
	    return prefix + "/edit";
	}
	
	/**
	 * 修改保存库位
	 */
	@RequiresPermissions("general:location:edit")
	@Log(title = "通用-库位管理", operating = "修改库位", action = BusinessType.UPDATE)
	@PostMapping("/edit")
	@ResponseBody
	public AjaxResult editSave(Location location)
	{
        location.setLastUpdatedBy(ShiroUtils.getLoginName());
		Integer result = locationService.updateByModel(location);
	    return toAjax(result > 0);
	}
	
	/**
	 * 删除库位
	 */
	@RequiresPermissions("general:location:remove")
	@Log(title = "通用-库位管理", operating = "删除库位", action = BusinessType.DELETE)
	@PostMapping( "/remove")
	@ResponseBody
	public AjaxResult remove(String ids)
	{
		if (StringUtils.isEmpty(ids))
			return AjaxResult.error("id不能为空");
		for (Integer id : Convert.toIntArray(ids))
		{
			Location location = locationService.selectEntityById(id);
			if (location.getStatus().equals("empty") && StringUtils.isEmpty(location.getContainerCode())) {
				location.setDeleted(true);
				location.setLastUpdatedBy(ShiroUtils.getLoginName());
				locationService.updateByModel(location);
			}
			else    {
                return AjaxResult.error("库位(" + location.getCode() + ")不是空,或者有容器,不能删除成功!");
            }
		}
		return AjaxResult.success("删除成功!");
	}


	/**
	 * 查询所有库位的最大行、列、层
	 */
	@Log(title = "通用-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
	@PostMapping("/getAllLocation")
	@ResponseBody
	public AjaxResult getAllLocation(String type)  {
		if (StringUtils.isEmpty(type))
			return AjaxResult.error("type不能为空");
		return AjaxResult.success(locationService.getAllLocation(type));
	}

	/**
	 * 查询详细的库位列表
	 */
	@Log(title = "通用-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
	@PostMapping("/getLocationInfo")
	@ResponseBody
	public AjaxResult getLocationInfo(String type, String row, String line, String layer, String grid,String warehouseCode)  {
		if (StringUtils.isEmpty(type))
			return AjaxResult.error("type不能为空");
		return AjaxResult.success(locationService.getLocationInfo(type, row, line, layer, grid,warehouseCode));
	}

    @Log(title = "库位监控-出库查看", operating = "出库查看", action = BusinessType.GRANT)
    @PostMapping("/checkLocationCode")
    @ResponseBody
    public AjaxResult checkLocationCode (String locationCode){
        if(StringUtils.isEmpty(locationCode)){
            return AjaxResult.error("库位不能为空!");
        }
        return iTaskService.checkLocationCode(locationCode);
    }


}