TvController.java 9.33 KB
package com.huaheng.api.tv.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.tv.domain.TvBean;
import com.huaheng.api.tv.domain.TvTaskVo;
import com.huaheng.api.wcs.domain.WcsTask;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.framework.web.controller.BaseController;
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.location.domain.Location;
import com.huaheng.pc.config.location.service.LocationService;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.zone.domain.Zone;
import com.huaheng.pc.config.zone.service.ZoneService;
import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMaterialSummary;
import com.huaheng.pc.inventory.InventoryMaterialSummary.service.InventoryMaterialSummaryService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.xnio.Result;

import javax.annotation.Resource;
import java.util.*;

@RestController
@RequestMapping("/API/WMS/v2")
public class TvController extends BaseController {

    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private ContainerService containerService;
    @Resource
    private LocationService locationService;
    @Resource
    private InventoryTransactionService inventoryTransactionService;
    @Resource
    private ZoneService zoneService;
    @Resource
    private InventoryDetailService inventoryDetailService;
    @Resource
    private InventoryMaterialSummaryService inventoryMaterialSummaryService;
    @Resource
    private MaterialService materialService;

    @PostMapping("/getTvView")
    @ApiOperation("获取电视信息")
    @ResponseBody
    public AjaxResult getTvView(@RequestBody WcsTask wcsTask) {
       String area =  wcsTask.getArea();
       LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
       taskHeaderLambdaQueryWrapper.eq(TaskHeader::getArea, area)
                                .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED)
                                .orderByDesc(TaskHeader::getId);
       List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper);
       if(taskHeaderList != null && taskHeaderList.size() > 0) {
           for(TaskHeader taskHeader : taskHeaderList) {
               String materialCode = taskHeader.getMaterialCode();
               String warehouseCode = taskHeader.getWarehouseCode();
               Material material = materialService.getMaterialByCode(materialCode, warehouseCode);
               if(material != null) {
                   taskHeader.setMaterialCode(material.getName());
               }
           }
       }

       LambdaQueryWrapper<Container> containerEmptyLambdaQueryWrapper = Wrappers.lambdaQuery();
        containerEmptyLambdaQueryWrapper.eq(Container::getArea, area)
                                    .eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_EMPTY)
                                    .ne(Container::getLocationCode, "");
       List<Container> containerEmptyList = containerService.list(containerEmptyLambdaQueryWrapper);
        int containerEmptySize = containerEmptyList.size();

        LambdaQueryWrapper<Container> containerManyLambdaQueryWrapper = Wrappers.lambdaQuery();
        containerManyLambdaQueryWrapper.eq(Container::getArea, area)
                .eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_MANY)
                .ne(Container::getLocationCode, "");
        List<Container> manyEmptyList = containerService.list(containerManyLambdaQueryWrapper);
        int manyEmptyListSize = manyEmptyList.size();
        containerEmptySize = containerEmptySize + manyEmptyListSize * 6;
        LambdaQueryWrapper<Container> containerSomeLambdaQueryWrapper = Wrappers.lambdaQuery();
        containerSomeLambdaQueryWrapper.eq(Container::getArea, area)
                .eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_SOME)
                .ne(Container::getLocationCode, "");
        List<Container> containerSomeList = containerService.list(containerSomeLambdaQueryWrapper);
        int containerSomeSize = containerSomeList.size();

        LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
        locationLambdaQueryWrapper.eq(Location::getArea, area);
        List<Location> locationList = locationService.list(locationLambdaQueryWrapper);
        int totalLocationSize = locationList.size();

        LambdaQueryWrapper<Zone> zoneLambdaQueryWrapper = Wrappers.lambdaQuery();
        zoneLambdaQueryWrapper.eq(Zone::getArea, area);
        Zone zone = zoneService.getOne(zoneLambdaQueryWrapper);
        LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
        inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getZoneCode, zone.getCode());
        List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper);
        int inventorySize = inventoryDetailList.size();


        LambdaQueryWrapper<InventoryMaterialSummary> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(InventoryMaterialSummary::getZoneCode, zone.getCode());
        List<InventoryMaterialSummary> list = inventoryMaterialSummaryService.list(lambdaQueryWrapper);
        if (list == null) {
            list = Collections.emptyList();
        }
        //筛选库存汇总数据的专用方法
        List<InventoryMaterialSummary> details = inventoryMaterialSummaryService.duplicateRemoval(list);

        TvBean tvBean = new TvBean();
        tvBean.setDetails(details);
        tvBean.setContainerEmptySize(containerEmptySize);
        tvBean.setContainerSomeSize(containerSomeSize);
        tvBean.setTotalLocationSize(totalLocationSize);
        tvBean.setTaskHeaderList(taskHeaderList);
        tvBean.setInventorySize(inventorySize);
        return AjaxResult.success(tvBean);
    }


    @Resource
    private TaskDetailService taskDetailService;


    /**
     * 获取出库任务详情
     * @return
     */
    @GetMapping("importExcel")
    @CrossOrigin
    public AjaxResult importExcel(String code){
        List<String> stationList = new ArrayList<>();
        if (StringUtils.isNotEmpty(code)) {
            stationList = Arrays.asList(code.split(","));
        }
        HashMap<String, String> typeMap = new HashMap<>();
        typeMap.put("100", "整盘入库");
        typeMap.put("200", "补充入库");
        typeMap.put("300", "整盘出库");
        typeMap.put("400", "分拣出库");
        typeMap.put("500", "空容器入库");
        typeMap.put("600", "空容器出库");
        typeMap.put("700", "盘点");
        typeMap.put("800", "移库");
        typeMap.put("900", "出库查看");
        typeMap.put("1000", "换站");
        typeMap.put("1100", "空托盘组入库");
        typeMap.put("1200", "空托盘组出库");
        typeMap.put("1300", "空托盘组换站");

        HashMap<String, String> statusMap = new HashMap<>();
        statusMap.put("1", "生成任务");
        statusMap.put("10", "下发任务");
        statusMap.put("50", "到达拣选台");
        statusMap.put("100", "任务完成");
        List<Integer> taskTypes = new ArrayList<>();
        // 只显示补充入库、整盘出库、分拣出库
        taskTypes.add(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT);
        taskTypes.add(QuantityConstant.TASK_TYPE_WHOLESHIPMENT);
        taskTypes.add(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT);

        LambdaQueryWrapper<TaskHeader> hQuery = Wrappers.lambdaQuery();
//        hQuery.eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_ARRIVED_STATION)
        hQuery.lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED).in(TaskHeader::getTaskType, taskTypes)
                .in(stationList.size() > 0, TaskHeader::getPort, stationList);
        List<TaskHeader> headers = taskHeaderService.list(hQuery);
        List results = new ArrayList<>();
        for (TaskHeader header : headers) {
            header.setUserDef1(typeMap.get(String.valueOf(header.getTaskType())));
            header.setUserDef2(statusMap.get(String.valueOf(header.getStatus())));
            TvTaskVo vo = new TvTaskVo();
            LambdaQueryWrapper<TaskDetail> dQuery = Wrappers.lambdaQuery();
            dQuery.eq(TaskDetail::getTaskId, header.getId());
            List<TaskDetail> details = taskDetailService.list(dQuery);

            vo.setTaskHeader(header);
            vo.setTaskDetailList(details);
            results.add(vo);
        }

        return AjaxResult.success(results);
    }

}