FlowOrderController.java 8.4 KB
Newer Older
苗卫卫 committed
1 2 3 4 5 6 7 8 9 10
package com.boco.nbd.wios.flow.controller;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.boco.nbd.framework.common.ResponseMessage2;
import com.boco.nbd.wios.export.PoiUtil;
import com.boco.nbd.wios.flow.entity.bo.ManualSapBo;
import com.boco.nbd.wios.flow.entity.po.OrderAbnormalPO;
import com.boco.nbd.wios.flow.entity.po.OrderPO;
import com.boco.nbd.wios.flow.enums.OrderInfoEnum;
11
import com.boco.nbd.wios.flow.mapper.def.FlowOrderMapper;
苗卫卫 committed
12 13
import com.boco.nbd.wios.flow.service.IOrderAbnormalService;
import com.boco.nbd.wios.flow.service.IOrderService;
14
import com.boco.nbd.wios.flow.service.impl.OrderServiceImpl;
苗卫卫 committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
import com.boco.nbd.wios.flow.util.ProcessUtil;
import com.boco.nbd.wios.flow.util.ValidUtil;
import com.boco.nbd.wios.manage.contants.WiosConstant;
import com.boco.nbd.wios.flow.entity.pdf.BlockPairBo;
import com.boco.nbd.wios.manage.service.impl.OrderInvoiceService;
import com.ihidea.core.support.session.SessionInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
33
import java.util.List;
苗卫卫 committed
34
import java.util.Map;
35
import java.util.stream.Collectors;
苗卫卫 committed
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186

/**
 * @Description 订单管理处理类
 * @Author Yu
 * @Date 2022/7/11
 */
@RestController
@Slf4j
@RequestMapping("/camsOrder")
@Api(tags = "新版本订单管理接口")
public class FlowOrderController {

    @Autowired
    private IOrderService orderService;

    @Autowired
    private IOrderAbnormalService orderAbnormalService;

    @Autowired
    private OrderInvoiceService orderInvoiceService;

    @PostMapping(value = "order/pushSapOrder")
    @ApiOperation(value = "同步订单到sap")
    public ResponseMessage2 pushSapOrder(@RequestBody ManualSapBo bo) {
        try {
            orderService.pushSapOrder(bo);
            return ResponseMessage2.Success2(bo.getId() + "重推SAP成功。");
        } catch (Exception ex) {
            return ResponseMessage2.Failed(bo.getId() + "重推SAP失败:" + ex.getMessage());
        }
    }

    /**
     * 批量更新开票信息
     *
     * @param invoiceJson
     * @return
     */
    @PostMapping(value = "orderInvoice/batchUpdate")
    @ApiOperation(value = "批量更新开票信息", notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "invoiceJson", value = "json数据", dataType = "String", paramType = "query", required = true),})
    public ResponseMessage2 batchImportInvoiceData(String invoiceJson) {
        if (StrUtil.isEmpty(invoiceJson)) {
            return ResponseMessage2.Failed("缺少参数");
        }
        try {
            orderInvoiceService.processBatchUpdate(invoiceJson);
        } catch (Exception ex) {
            return ResponseMessage2.Failed(ex.getMessage());
        }

        return ResponseMessage2.Success();
    }

    @ApiOperation("获取工单信息:type=1 勘测详情;type=2 安装详情;type缺失或者其它值 基本信息")
    @GetMapping(value = "/getOrderInfo")
    public ResponseMessage2 getOrderInfo(@RequestParam(value = "id") String id, @RequestParam(value = "type", required = false) Integer type) {
        try {
            OrderInfoEnum infoEnum = OrderInfoEnum.getEnum(type);
            return ResponseMessage2.Success2(orderService.getOrderInfo(id, infoEnum));
        } catch (Exception ex) {
            return ResponseMessage2.Failed("getOrderInfo:" + ex.getMessage());
        }
    }

    @GetMapping(value = "exportOrderDocx.do")
    @ApiOperation(value = "导出工单Docx,type=1 勘测详情;type=2 安装详情;===>调整成前端实现")
    @ApiIgnore
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "工单Id", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "type", value = "类型", dataType = "Integer", paramType = "query", required = true)})
    public void exportOrderDocx(HttpServletResponse response, String id, Integer type) throws Exception {
        OrderInfoEnum infoEnum = OrderInfoEnum.getEnum(type);
        if (OrderInfoEnum.BASE_INFO.equals(infoEnum)) {
            infoEnum = OrderInfoEnum.SURVEY_INFO;
        }
        Map<String, Object> dataMap = orderService.getOrderInfo(id, infoEnum);
        String fileName = OrderInfoEnum.SURVEY_INFO.equals(infoEnum) ? WiosConstant.SURVEY_ORDER_DOCX : WiosConstant.INSTALL_ORDER_DOCX;
        String templateName = OrderInfoEnum.SURVEY_INFO.equals(infoEnum) ? WiosConstant.SURVEY_ORDER_DOCX_TEMPLATE : WiosConstant.INSTALL_ORDER_DOCX_TEMPLATE;
        PoiUtil.exportOrderDocx(response, dataMap, fileName, templateName);

    }


    @PostMapping("order/add")
    @ApiOperation(value = "订单管理-添加派单信息")
    public ResponseMessage2 add(OrderPO order) {
        OrderAbnormalPO orderAbnormalPO = new OrderAbnormalPO();
        BeanUtil.copyProperties(order, orderAbnormalPO);
        SessionInfo sessionInfo = ProcessUtil.getUserInfo();
        if (sessionInfo == null) {
            return ResponseMessage2.Failed(ProcessUtil.RE_LOGIN);
        }
        order.setCreateAccount(sessionInfo.getUserId());
        order.setCreateAccountName(sessionInfo.getUserName());
        //车主姓名
        if (StringUtils.isBlank(order.getUserName()) ||
                //车主电话
                !ValidUtil.isMobileSimple(order.getUserPhone()) ||
                //车型
                StringUtils.isBlank(order.getVehicleModel()) ||
                //主机厂
                StringUtils.isBlank(order.getOemName()) ||
                //主机厂业务代码
                order.getOemId() == null ||
                //是否需要人工派单
                order.getManuDispatchEnable() == null ||
                //区域
//                StringUtils.isBlank(order.getArea()) ||
                //安装地址
                StringUtils.isBlank(order.getAddress()) ||
                //是否为售车前预勘测
                order.getSurveyBeforeSaleEnable() == null ||
                //是否联系上客户
                order.getIsConnect() == null ||
                //是否需要勘测
                order.getIsNeedSurvey() == null ||
                //安装紧急程度
                order.getInstallEmergencyLevel() == null) {

            orderAbnormalService.insertSelective(orderAbnormalPO);
            return ResponseMessage2.Failed("异常订单");
        }
        return orderService.startFlow(order);
    }

    @GetMapping("order/getOemCascade")
    @ApiOperation(value = "订单管理-主机厂和套包类型级联关系")
    @ApiImplicitParams({@ApiImplicitParam(name = "oemId", value = "主机厂ID", dataType = "String", paramType = "query", required = true)
    })
    public ResponseMessage2 getOemCascade(String oemId) {
        return ResponseMessage2.Success2(orderService.getOemCascade(oemId));
    }

    /**
     * @Description 订单附件生成pdf
     * @Param
     * @author miaoguoqing
     * @date 2022/10/27
     */
    @PostMapping(value = "order/autogeneratePdf")
    @ApiOperation(value = "订单附件生成pdf")
    public void getAutogeneratePdf(@RequestBody BlockPairBo blockPairBo, HttpServletResponse response) throws IOException {
        try {
            orderService.getAutogeneratePdf(blockPairBo, response);
        } catch (Exception e) {
            log.error("生成PDF失败!", e);
            throw new IOException(e.getMessage());
        }
    }
187 188
    @Autowired
    private FlowOrderMapper flowOrderMapper;
苗卫卫 committed
189

190 191
    @GetMapping("/getCanDeliveryOrder")
    @ApiOperation("获取可以发货的订单列表")
192 193 194 195 196 197 198 199 200
    public ResponseMessage2 getCanDeliveryOrder(@RequestParam String orderId,@RequestParam String  isproduct){
        List<OrderPO> list=flowOrderMapper.getCanDeliveryOrder(orderId);
        if ("品牌墙盒".equals(isproduct)){
            List<OrderPO> has = list.stream().filter(i -> i.getInstallWallboxModel().equals("CAMS")).collect(Collectors.toList());
            return ResponseMessage2.Success2(has);
        }else {
            List<OrderPO> has = list.stream().filter(i -> !i.getInstallWallboxModel().equals("CAMS")).collect(Collectors.toList());
            return ResponseMessage2.Success2(has);
        }
201
    }
苗卫卫 committed
202
}