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

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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.general.domain.AdjustDomain;
import com.huaheng.api.tv.domain.ErrInfo;
import com.huaheng.api.tv.domain.OrderDetail;
import com.huaheng.api.tv.domain.TvBean;
import com.huaheng.api.wcs.domain.WcsTask;
import com.huaheng.api.wcs.domain.WmsTask;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.utils.http.HttpUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.address.service.AddressService;
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.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.domain.InventoryTransaction;
import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService;
import com.huaheng.pc.monitor.apilog.service.IApiLogService;
import com.huaheng.pc.system.config.service.IConfigService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.lang.ref.WeakReference;
import java.text.ParseException;
import java.text.SimpleDateFormat;
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 IApiLogService apiLogService;
    @Resource
    private IConfigService iConfigService;
    @Resource
    private AddressService addressService;

    @PostMapping("/getTvView")
    @ApiOperation("获取电视信息")
    @ResponseBody
    public AjaxResult getTvView(@RequestBody WcsTask wcsTask) {
       String area =  wcsTask.getArea();
       LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
       taskHeaderLambdaQueryWrapper
                                .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED)
                                .orderByDesc(TaskHeader::getId);
       List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper);

       LambdaQueryWrapper<Container> containerEmptyLambdaQueryWrapper = Wrappers.lambdaQuery();
        containerEmptyLambdaQueryWrapper
                                    .ne(Container::getLocationCode, "")
                                    .eq(Container::getEmptyPallet,"1");
       List<Container> containerEmptyList = containerService.list(containerEmptyLambdaQueryWrapper);
        int containerEmptySize = containerEmptyList.size();

        LambdaQueryWrapper<Container> containerSomeLambdaQueryWrapper = Wrappers.lambdaQuery();
        containerSomeLambdaQueryWrapper
                .eq(Container::getEmptyPallet,"0")
                .ne(Container::getLocationCode, "");
        List<Container> containerSomeList = containerService.list(containerSomeLambdaQueryWrapper);
        int containerSomeSize = containerSomeList.size();

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

        LambdaQueryWrapper<Zone> zoneLambdaQueryWrapper = Wrappers.lambdaQuery();
        zoneLambdaQueryWrapper.eq(Zone::getArea, "1");
        Zone zone = zoneService.getOne(zoneLambdaQueryWrapper);
        LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
        inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getZoneCode, zone.getCode());
        List<InventoryDetail> inventoryDetailList = inventoryDetailService.list();
        int inventorySize =0; //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);
        if(area.equals("3")){//1,2区域为站台电视机区域,3为里面分拣台电视机
            List<ErrInfo> errList=apiLogService.getErrorList();
            tvBean.setErrinfo(errList);
            inventorySize=taskHeaderService.getPickNum();
        }else{
            String containerCode="";
            String port="";
            List<OrderDetail> ordernfo =new ArrayList<>();
            if (area.equals("1")){
                port="P1031";
            }else{
                port="P1030";
            }
            containerCode=taskHeaderService.getContinerCode(port);
            if(containerCode==null){
                tvBean.setMessage(port+":当前无托盘出库信息显示......");
            }else{
                JSONObject  jsonObject=JSONObject.parseObject(getOrderByWms(containerCode));
                String palletContent =jsonObject.getString("list");
                ordernfo = JSONObject.parseArray(palletContent, OrderDetail.class);
                tvBean.setMessage(jsonObject.getString("message"));
            }
            tvBean.setOrderDetails(ordernfo);
            inventorySize=containerEmptySize+containerSomeSize;
        }
        tvBean.setInventorySize(inventorySize);
        return AjaxResult.success(tvBean);
    }


    //获取托盘订单内容
    public String getOrderByWms(String containercode){
        String code="";
        String message="";
        List<OrderDetail> list=new ArrayList<>();
        WmsTask wmsTask=new WmsTask();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
        wmsTask.setReqID(iConfigService.getRegId());
        wmsTask.setContainerCode(containercode);
        wmsTask.setRequestTime(df.format(new Date()));
        String JsonParam = JSON.toJSONString(wmsTask);
        System.out.println(JsonParam);
        String url = addressService.selectAddress(QuantityConstant.ADDRESS_ORDER_WMS_INFO, "ZH0001", "1");
        String result = HttpUtils.bodypost(url, JsonParam);
        JSONObject json=new JSONObject();
        json=JSONObject.parseObject(result);
        code=json.getString("code");
        if(code.equals("1")){
            JSONObject data=JSONObject.parseObject(json.getString("data"));
            message=data.getString("message");
            String palletContent=data.getString("palletContent");
            list = JSON.parseArray(palletContent,OrderDetail.class);
        }
        JSONObject json2=new JSONObject();
        json2.put("code",code);
        json2.put("message",message);
        json2.put("list",list);
        System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
        System.out.println(list);
        System.out.println("code:"+code);
        return json2.toJSONString();
    }

    public String getOrderByWms3(String containercode){
        String code="2";
        String message="3";
        List<OrderDetail> list=new ArrayList<>();
        WmsTask wmsTask=new WmsTask();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
        wmsTask.setReqID(iConfigService.getRegId());
        wmsTask.setContainerCode(containercode);
        wmsTask.setRequestTime(df.format(new Date()));
        OrderDetail p=new OrderDetail();
        OrderDetail p2=new OrderDetail();
        p.setOrderNo("ZH0120211123000009");
        p.setStation("000000-0010-WMSGX");
        p.setMaterialCode("materialCode");
        p.setMaterialName("丝座SMHW40.1.1-8");
        p.setQty("3.0");
        p2.setOrderNo("2342");
        p2.setStation("000000-432-WMSGX");
        p2.setMaterialCode("materialCode");
        p2.setMaterialName("bbbbbb.1.1-8");
        p2.setQty("3.0");
        list.add(p);
        list.add(p2);
        JSONObject json=new JSONObject();
        json.put("code",code);
        json.put("message",message);
        json.put("list",list);
        System.out.println("code:"+code);
        return json.toJSONString();
    }

}