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; import com.boco.nbd.wios.flow.mapper.def.FlowOrderMapper; import com.boco.nbd.wios.flow.service.IOrderAbnormalService; import com.boco.nbd.wios.flow.service.IOrderService; import com.boco.nbd.wios.flow.service.impl.OrderServiceImpl; 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.entity.bo.MaterialsEx; import com.boco.nbd.wios.manage.entity.bo.OrderVo; import com.boco.nbd.wios.manage.mapper.extdb.MaterialsMapperEx; 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.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @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; @Resource MaterialsMapperEx materialsMapperEx; @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()); } } @Autowired private FlowOrderMapper flowOrderMapper; @GetMapping("/getCanDeliveryOrder") @ApiOperation("获取可以发货的订单列表") public ResponseMessage2 getCanDeliveryOrder(@RequestParam String orderId,@RequestParam String isproduct){ List<OrderVo> list=flowOrderMapper.getCanDeliveryOrder(orderId,"品牌墙盒".equals(isproduct)); list.stream().forEach(i->{ MaterialsEx materials=materialsMapperEx.materialsByMaterialsCode(i.getItemModel()); if (materials!=null){ i.setMaterialName(materials.getMaterialsName()); } }); return ResponseMessage2.Success2(list); // if ("品牌墙盒".equals(isproduct)){ // List<OrderVo> 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(list); // } } }