ShippingCombinationController.java 6.48 KB
package com.huaheng.pc.shipment.shippingCombination.controller;

import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.page.TableDataInfo;
import com.huaheng.pc.general.material.domain.Material;
import com.huaheng.pc.general.material.service.MaterialServiceImpl;
import com.huaheng.pc.inventory.inventory.domain.Inventory;
import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailServiceImpl;
import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentCombinationModel;
import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderServiceImpl;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailServiceImpl;
import com.huaheng.pc.shipment.shippingCombination.domain.ShippingCombinationDetailModel;
import com.huaheng.pc.shipment.shippingCombination.domain.ShippingSearch;
import com.huaheng.pc.shipment.shippingCombination.service.ShippingCombinationService;
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.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/shipment/shippingCombination")
public class ShippingCombinationController extends BaseController {

    private String prefix = "shipment/shippingCombination";

    @Autowired
    MaterialServiceImpl materialService;
    @Autowired
    ShipmentDetailServiceImpl shipmentDetailService;
    @Autowired
    ShippingCombinationService shippingCombinationService;
    @Autowired
    ShipmentContainerHeaderServiceImpl shipmentContainerHeaderService;
    @Autowired
    ShipmentContainerDetailServiceImpl shipmentContainerDetailService;

    /**
     *  打开出库组盘页面
     * @param shipmentCode
     * @param map
     * @return
     */
    @RequiresPermissions("shipment:shippingCombination:view")
    @GetMapping()
    public String ShippingCombination(String shipmentCode, ModelMap map){
        map.put("code", shipmentCode);
        return prefix+"/shippingCombination";
    }

    /**
     * 获取单据列表
     * @param code
     * @return
     */
    @GetMapping("/listShipmentDetail")
    @ResponseBody
    public AjaxResult  listShipmentDetail(String code,String ids){
        if(StringUtils.isEmpty(code)){
            return null;
        }
        AjaxResult result=new AjaxResult();
        ShipmentDetail shipmentDetail = new ShipmentDetail();
        shipmentDetail.setShipmentCode(code);
        shipmentDetail.setWarehouseId(ShiroUtils.getWarehouseId());
        if(ids.equals("null")){
            result = shipmentDetailService.selectListEntity(shipmentDetail, null);
        }else {
//        startPage();
            result = shipmentDetailService.selectListEntity(shipmentDetail, ids.split(","));
        }
        return result;
    }

    /**
     * 获取已经组盘的列表
     * @param code
     * @return
     */
    @GetMapping("/listCombinationDetail")
    @ResponseBody
    public AjaxResult listCombinationDetail(String code){
        if(StringUtils.isEmpty(code)){
            return null;
        }
        String message="other";
        AjaxResult<List<ShippingCombinationDetailModel>> ajaxResult = shippingCombinationService.GetShippingCombinationDetails(code,message);
        return ajaxResult;

    }

    /**
     * 获取能出库的物料列表
     * @param search
     * @return
     */
    @PostMapping("/getInventory")
    @ResponseBody
    public TableDataInfo getInventory(ShippingSearch search){
        if(StringUtils.isEmpty(search.getCompanyCode()) || StringUtils.isEmpty(search.getMaterialCode())){
            return null;
        }
        search.setWarehouseCode(ShiroUtils.getWarehouseCode());
        startPage();
        List<Inventory> list = new ArrayList<>();
        if(StringUtils.isNotEmpty(search.getZoneCode()) && search.getZoneCode().equals("AGV")){
            list=shippingCombinationService.getAgvInventory(search);
        }else {
            list=shippingCombinationService.getInventory(search);
        }
        return getDataTable(list);
    }

    /**
     * 自动组盘
     * @param shipmentCode
     * @return
     */
    @RequiresPermissions("shipment:shippingCombination:combination")
    @PostMapping("/autoCombination")
    @ResponseBody
    public AjaxResult autoCombination(String shipmentCode){
        AjaxResult ajaxResult = shipmentContainerHeaderService.autoCombination(shipmentCode);
        return ajaxResult;
    }

    /**
     * 打开新增组盘页面
     * @param id
     * @param model
     * @return
     */
    @RequiresPermissions("shipment:shippingCombination:combination")
    @GetMapping("/combination")
    public String combination(int id, ModelMap model){
        ShipmentDetail shipmentDetail = shipmentDetailService.selectEntityById(id);
        Material material = materialService.selectEntityById(shipmentDetail.getMaterialId());
        shipmentDetail.setMaterialName(material.getName());
        model.put("shipmentDetail",shipmentDetail);
        return prefix+"/combination";
    }

    /**
     * 保存组盘
     * @param shipmentCombination
     * @return
     */
    @RequiresPermissions("shipment:shippingCombination:combination")
    @PostMapping("/Addcombination")
    @ResponseBody
    public AjaxResult Addcombination(ShipmentCombinationModel shipmentCombination){
        AjaxResult AjaxResult = shipmentContainerHeaderService.checkCombination(shipmentCombination);
        if(AjaxResult.hasErr()){
            return AjaxResult;
        }
        ShipmentContainerHeader shipmentContainerHeader = shipmentContainerHeaderService.combination(shipmentCombination);
        return  AjaxResult.success(shipmentContainerHeader.getId());
    }

    /** 取消组盘
     *
     * @param shipmentContainerDetailIds
     * @return
     */
    @RequiresPermissions("shipment:shippingCombination:remove")
    @PostMapping("/cancelCombination")
    @ResponseBody
    public AjaxResult cancelCombination(@RequestBody List<Integer> shipmentContainerDetailIds){
        return shipmentContainerHeaderService.cancelCombinationDetail(shipmentContainerDetailIds);
    }


}