TaskCancelServiceImpl.java 6.93 KB
package com.huaheng.api.wcs.service.taskCancel;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.general.domain.ReorderDomain;
import com.huaheng.api.general.domain.TaskShipmentOrder;
import com.huaheng.api.wcs.domain.WcsTask;
import com.huaheng.common.constant.HttpConstant;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.http.HttpUtils;
import com.huaheng.common.utils.restful.RestUtil;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
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.containerType.domain.ContainerType;
import com.huaheng.pc.config.containerType.service.ContainerTypeService;
import com.huaheng.pc.config.location.service.LocationService;
import com.huaheng.pc.config.locationType.domain.LocationType;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Comparator;
import java.util.List;

@Service
public class TaskCancelServiceImpl implements TaskCancelService {


    @Autowired
    private AddressService addressService;
    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private ContainerTypeService containerTypeService;
    @Resource
    private ContainerService containerService;
    /**取消任务
     * 1、判断参数是否为空
     * 2、转换实体
     * 3、发送数据
     * @param id
     * @return
     */
    @Override
    @Transactional
    public AjaxResult TaskCance(Integer id) {

        //1、判断参数是否为空
        if(id == null){
            throw new ServiceException("任务号为空");
        }
        //2、转换实体
        WcsTask wcsTask = new WcsTask();
        wcsTask.setTaskNo(id.toString());
        TaskHeader byId = taskHeaderService.getById(id);
        String area=null;
        String warehouseCode=null;
        String url=null;

        LambdaQueryWrapper<Container> lambdaWrapper = Wrappers.lambdaQuery();
        lambdaWrapper.eq(Container::getCode,byId.getContainerCode());
        Container container = containerService.getOne(lambdaWrapper);


        LambdaQueryWrapper<ContainerType> lambdaWrapper1 = Wrappers.lambdaQuery();
        lambdaWrapper1.eq(ContainerType::getCode,container.getContainerType());
        ContainerType containerType = containerTypeService.getOne(lambdaWrapper1);
        area = containerType.getArea();
        warehouseCode=containerType.getWarehouseCode();

        if (byId.getZoneCode()==null)
        {

            url = addressService.selectAddress(QuantityConstant.ADDRESS_WCS_TASK_CANCEL,warehouseCode,area);
        }
        else {
            if (byId.getZoneCode().equals("C"))
            {
                area="3";
                warehouseCode=byId.getWarehouseCode();}
            url = addressService.selectAddress(QuantityConstant.ADDRESS_WCS_TASK_CANCEL,warehouseCode,area);
        }
        //3、发送数据

        String data =null;
        if (byId.getTaskType()==300)
        {
        LambdaQueryWrapper<TaskHeader> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(TaskHeader::getShipmentOrder, byId.getShipmentOrder())
        .eq(TaskHeader::getTaskType,300);
        List<TaskHeader> taskHeader = taskHeaderService.list(wrapper);
        //排序//升序
        taskHeader.sort(Comparator.comparing(TaskHeader::getSequence));
        //  taskHeader.sort(Comparator.comparing(TaskHeader::getSequence).reversed());//降序
        for (int j=0;j<taskHeader.size();j++)
        { if (taskHeader.get(j).getId().equals(byId.getId()))
        {
            taskHeader.remove(j);
        }
        }
        for (TaskHeader ids : taskHeader) {
        }
        int i = 1;
        for (TaskHeader ids : taskHeader) {
            ids.setSequence(i++);
            ids.setSequenceNumber(taskHeader.size());
            taskHeaderService.updateById(ids);
        }
        ReorderDomain reorderDomain=new ReorderDomain();
        reorderDomain.setTaskNo(""+byId.getId());
        for (TaskHeader ids : taskHeader) {
            if (ids.getStatus()!= 1)
            {
                TaskShipmentOrder taskShipmentOrder = new TaskShipmentOrder();
                taskShipmentOrder.setTaskNo(""+ids.getId());
                taskShipmentOrder.setSequence(ids.getSequence());
                taskShipmentOrder.setSequenceNumber(ids.getSequenceNumber());
                taskShipmentOrder.setShipmentOrder(ids.getShipmentOrder());
                reorderDomain.taskShipmentOrders.add(taskShipmentOrder);
            }
        }
        String jsonParam = JSON.toJSONString(reorderDomain);

//            ResponseEntity<JSONObject> result = RestUtil.request_post(url, warehouseCode, jsonParam);
        ResponseEntity<JSONObject> result = RestUtil.request_post(url, warehouseCode, jsonParam);
        if (result != null && result.getBody() != null) {
            String code = result.getBody().getString("code");
            String msg = result.getBody().getString("msg");
            if (Integer.parseInt(code) != HttpConstant.OK) {
                throw new ServiceException(msg);
            }
        } else {
            throw new ServiceException("接口地址错误或返回为空");
        }
            data = String.valueOf(result.getBody());


        }
        else {

            ReorderDomain reorderDomain = new ReorderDomain();
            reorderDomain.setTaskNo(""+byId.getId());
            String jsonParam = JSON.toJSONString(reorderDomain);
            ResponseEntity<JSONObject> result = RestUtil.request_post(url, warehouseCode, jsonParam);
            if (result != null && result.getBody() != null) {
                String code = result.getBody().getString("code");
                String msg = result.getBody().getString("msg");
                if (Integer.parseInt(code) != HttpConstant.OK) {
                    throw new ServiceException(msg);
                }
            } else {
                throw new ServiceException("接口地址错误或返回为空");
            }
            data = String.valueOf(result.getBody());

        }

        AjaxResult ajaxResult = JSON.parseObject(data, AjaxResult.class);

        if (ajaxResult.getCode() != HttpConstant.OK)
        {
            throw new ServiceException(ajaxResult.getMsg());
        }

        return ajaxResult;
    }
}