/** * @Project: emis * @Title: EmisWaybillController.java * @author linfso * @date 2024-02-29 08:15:14 * @Copyright: ShangHai Duta 2022 All rights reserved. * @version v1.0 * @Description:

运单列表 控制器

*/ package com.xdadan.erp.apiweb; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.xdadan.erp.common.annotation.Log; import com.xdadan.erp.common.annotation.filter.jackson.JacksonFilter; import com.xdadan.erp.common.config.PayConfig; import com.xdadan.erp.common.core.controller.BaseController; import com.xdadan.erp.common.core.domain.AjaxResult; import com.xdadan.erp.common.core.domain.entity.SysUser; import com.xdadan.erp.common.core.page.TableDataInfo; import com.xdadan.erp.common.enums.BusinessType; import com.xdadan.erp.common.utils.DateUtils; import com.xdadan.erp.common.utils.ServletUtils; import com.xdadan.erp.common.utils.idgen.UUID; import com.xdadan.erp.emis.domain.*; import com.xdadan.erp.emis.domain.enumtype.ScanType; import com.xdadan.erp.emis.domain.exception.EmisBizError; import com.xdadan.erp.emis.domain.vo.FeeItem; import com.xdadan.erp.emis.domain.vo.WaybillOrder; import com.xdadan.erp.emis.service.EmisBaseService; import com.xdadan.erp.emis.service.IEmisElectronicSitePagService; import com.xdadan.erp.emis.service.IEmisTmsScanRecordService; import com.xdadan.erp.emis.service.IEmisWaybillService; import com.xdadan.erp.emis.service.print.IXddTplPrint; import com.xdadan.erp.emis.service.print.tanex.TanexTplPrintImpl; import com.xdadan.erp.emis.utils.WaybillHelper; import com.xdadan.erp.system.domain.SysFileInfo; import com.xdadan.erp.system.domain.SysPost; import com.xdadan.erp.system.service.ISysFileInfoService; import com.xdadan.erp.system.service.ISysPostService; import com.xdadan.erp.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DuplicateKeyException; import org.springframework.http.MediaType; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.*; import java.nio.charset.Charset; import java.util.*; /** * 运单列表Controller * * @author linfso * @date 2024-02-29 08:15:14 */ @Slf4j @RestController @RequestMapping("/apiweb/emisWaybill") public class WaybillController extends BaseController { @Autowired private ISysUserService userService; @Autowired private ISysPostService postService; @Autowired private IEmisWaybillService emisWaybillService; @Autowired private EmisBaseService emisBaseService; @Autowired private ISysFileInfoService sysFileInfoService; @Autowired private ISysUserService sysUserService; @Autowired private IEmisElectronicSitePagService emisElectronicSitePagService; @Autowired private IEmisTmsScanRecordService emisTmsScanRecordService; /** * 获取电子运单信息 */ @GetMapping(value = "/getWaybillDetailByOms") public AjaxResult getWaybillDetailByOms(String billCode ,String orderSn) { try { WaybillOrder waybillOrder=null; if(StringUtils.isEmpty(billCode) ){ return AjaxResult.error("参数错误"); } billCode= WaybillHelper.formatQueryValue(billCode); if(!StringUtils.isEmpty(billCode) ){ boolean isExists=emisBaseService.checkWaybillIsExists(billCode); if(!isExists){ return AjaxResult.error("运单不存在"); } String mainBillCode=emisBaseService.getMainBillCode(billCode); waybillOrder = emisWaybillService.getWaybillOrderByBillCode(mainBillCode); if(waybillOrder==null){ return AjaxResult.error("运单不存在"); } // 返回子单信息 waybillOrder.setBillCode(billCode); }else if(!StringUtils.isEmpty(orderSn)){ waybillOrder = emisWaybillService.getWaybillOrderByOrderSn(orderSn); if(waybillOrder==null){ return AjaxResult.error("订单不存在"); } } // 获取取件员电话 if(!StringUtils.isEmpty(waybillOrder.getTakePieceEmployeeCode())){ SysUser user= sysUserService.selectUserByUserName(waybillOrder.getTakePieceEmployeeCode()); waybillOrder.setTakePieceEmployeePhone(user.getPhonenumber()); } return AjaxResult.success("获取成功",waybillOrder); } catch (Exception ex){ ex.printStackTrace(); // 返回子定义异常 if(ex instanceof EmisBizError){ return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); } return AjaxResult.error("服务器异常,联系客服"); } } @Log(title = "OMSExcel草稿方式下单", businessType = BusinessType.INSERT) @PostMapping(value = "/draftSubmitOrderByOms") public AjaxResult draftSubmitOrderByOms(@RequestBody EmisWaybill emisWaybillSave) { JSONObject jObjOut = new JSONObject(); String result="success"; String msg="下单成功"; try { emisWaybillService.draftSubmitOrder(emisWaybillSave,true); jObjOut.put("billDetail", emisWaybillSave); }catch(EmisBizError ex){ ex.printStackTrace(); result="fail"; msg=ex.getErrorCode()+":"+ex.getMessage(); } catch (DuplicateKeyException e) { e.printStackTrace(); result="fail"; msg="运单号重复"; } catch (Exception ex){ result="fail"; ex.printStackTrace(); msg="系统异常:"+ex.getMessage(); // 返回子定义异常 if(ex instanceof EmisBizError){ msg=((EmisBizError)ex).getErrorCode()+":"+ex.getMessage(); } } jObjOut.put("result", result); jObjOut.put("msg", msg); return AjaxResult.success("成功", jObjOut); } @Log(title = "取消订单", businessType = BusinessType.INSERT) @PostMapping(value = "/cancelOrderByOms") public AjaxResult cancelOrderByOms(@Valid @RequestBody WaybillOrder waybillOrder) { try { if(StringUtils.isEmpty(waybillOrder.getOrderSn()) ){ return AjaxResult.error("订单号不能为空"); } EmisWaybill emisWaybill = new EmisWaybill(); emisWaybill.setOrderSn(waybillOrder.getOrderSn()); emisWaybill.setOrderRemark(waybillOrder.getOrderRemark()); emisWaybillService.cancelOrder(emisWaybill); return AjaxResult.success("取消成功"); }catch(EmisBizError ex){ ex.printStackTrace(); return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); } catch (Exception ex){ ex.printStackTrace(); // 返回子定义异常 if(ex instanceof EmisBizError){ return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); } return AjaxResult.error("服务器异常,联系客服"); } } @Log(title = "API实时下单", businessType = BusinessType.INSERT) @PostMapping(value = "/realMatchOrderApi") public AjaxResult realMatchOrderApi(@RequestBody EmisWaybill emisWaybillSave) { try { String appKey=ServletUtils.getHeaderValue("appKey"); String sign=ServletUtils.getHeaderValue("sign"); emisWaybillService.realMatchOrderApi(emisWaybillSave); // 下单成功,查询下单数据 EmisWaybill newBill = emisBaseService.getWaybillByBillCode(emisWaybillSave.getBillCode()); JSONObject jObjOut = new JSONObject(); // 集包地,目的网点 String packageWdjc=""; try { EmisSite destSite = emisBaseService.getSiteByCode(newBill.getDispatchUnderlingSiteCode()); packageWdjc=destSite.getSizeCode3(); }catch (Exception ex){ ex.printStackTrace(); } // 三段码 山东淄博-越南胡志明 String threeCodeNum = newBill.getSendSiteName()+"-"+newBill.getDispatchUnderlingSiteName(); jObjOut.put("billCode",newBill.getBillCode()); jObjOut.put("packageWdjc",packageWdjc); jObjOut.put("threeCodeNum",threeCodeNum); jObjOut.put("sendCountryName",newBill.getSendCountryName()); jObjOut.put("destCountryName",newBill.getReceiveCountryName()); jObjOut.put("transLineTypeName",newBill.getTransLineTypeName()); jObjOut.put("productTypeName",newBill.getProductTypeName()); jObjOut.put("timeType",newBill.getTimeType()); return AjaxResult.success("下单成功", jObjOut); } catch (DuplicateKeyException e) { e.printStackTrace(); return AjaxResult.error("运单号重复"); } catch (Exception ex){ ex.printStackTrace(); String msg="下单失败"; // 返回子定义异常 if(ex instanceof EmisBizError){ msg=((EmisBizError)ex).getErrorCode()+":"+ex.getMessage(); } return AjaxResult.error(msg); } } @Log(title = "OMS实时下单", businessType = BusinessType.INSERT) @PostMapping(value = "/realSubmitOrderByOms") public AjaxResult realSubmitOrderByOms(@Valid @RequestBody WaybillOrder waybillOrder, Integer isModify) { try { if(StringUtils.isEmpty(waybillOrder.getBillCode()) ){ waybillOrder.setBillCode(emisElectronicSitePagService.realMatchWaybill(waybillOrder.getSendSiteCode(),"T7080")); } EmisWaybill emisWaybillSave = waybillOrder.toDb(); emisWaybillService.realSubmitOrderByOms(emisWaybillSave); JSONObject jObjOut = new JSONObject(); jObjOut.put("billCode", waybillOrder.getBillCode()); // jObjOut.put("prodName", waybillOrder.getProductType()); return AjaxResult.success("下单成功", jObjOut); }catch(EmisBizError ex){ ex.printStackTrace(); return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); } catch (DuplicateKeyException e) { e.printStackTrace(); return AjaxResult.error("运单号重复!"); } catch (Exception ex){ ex.printStackTrace(); // 返回子定义异常 if(ex instanceof EmisBizError){ return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); } return AjaxResult.error("服务器异常,联系客服"); } } @Log(title = "运费试算", businessType = BusinessType.OTHER) @PostMapping(value = "/preCalcWaybillFeeByOms") public AjaxResult preCalcWaybillFeeByOms(@RequestBody WaybillOrder waybillOrder) { try { EmisWaybill emisWaybillSave = waybillOrder.toDb(); List estList=emisWaybillService.preCalcWaybillFee(emisWaybillSave); return AjaxResult.success("试算成功", estList); } catch(EmisBizError ex){ ex.printStackTrace(); return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); } catch (Exception ex){ ex.printStackTrace(); // 返回子定义异常 if(ex instanceof EmisBizError){ return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); } return AjaxResult.error("服务器异常,联系客服"); } } @Log(title = "OMS下单运费试算", businessType = BusinessType.OTHER) @PostMapping(value = "/calcProductFeeByOms") public AjaxResult calcProductFeeByOms(@RequestBody WaybillOrder waybillOrder) { try { EmisWaybill emisWaybillSave = waybillOrder.toDb(); List estList=emisWaybillService.preCalcWaybillFee(emisWaybillSave); // 如果没有报价,则使用该路线下的产品作为列表 if(CollectionUtil.isEmpty(estList)){ List prodList=emisBaseService.getTransProductByTransLine(emisWaybillSave.getTransLineType()); if(!CollectionUtil.isEmpty(prodList)){ estList = new ArrayList<>(); for (EmisTransProduct prod:prodList) { Map estFeeMap = new HashMap<>(); estFeeMap.put("productType",prod.getProdCode()); estFeeMap.put("productTypeName",prod.getProdName()+""); estFeeMap.put("agingDesc",prod.getAgingDesc()); estFeeMap.put("leastPrice","0"); estFeeMap.put("estFee","0"); estFeeMap.put("orderNum","0"); estList.add(estFeeMap); } } } return AjaxResult.success("试算成功", estList); } catch(EmisBizError ex){ ex.printStackTrace(); return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); } catch (Exception ex){ ex.printStackTrace(); // 返回子定义异常 if(ex instanceof EmisBizError){ return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); } return AjaxResult.error("服务器异常,联系客服"); } } }